﻿2026-06-21T01:51:37.9725031Z ##[group]Run ./traceable-reqs check --json
2026-06-21T01:51:37.9725522Z [36;1m./traceable-reqs check --json[0m
2026-06-21T01:51:37.9742745Z shell: /usr/bin/bash -e {0}
2026-06-21T01:51:37.9743098Z ##[endgroup]
2026-06-21T01:51:38.0832336Z {
2026-06-21T01:51:38.0833023Z   "schemaVersion": 1,
2026-06-21T01:51:38.0833532Z   "summary": {
2026-06-21T01:51:38.0833970Z     "requirementCount": 275,
2026-06-21T01:51:38.0834477Z     "completeCount": 275,
2026-06-21T01:51:38.0834950Z     "incompleteCount": 0,
2026-06-21T01:51:38.0835412Z     "findingCount": 0
2026-06-21T01:51:38.0835828Z   },
2026-06-21T01:51:38.0836205Z   "requirements": [
2026-06-21T01:51:38.0836580Z     {
2026-06-21T01:51:38.0836907Z       "id": "REQ-API-1",
2026-06-21T01:51:38.0837442Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-21T01:51:38.0838076Z       "requiredStages": [
2026-06-21T01:51:38.0838537Z         "impl",
2026-06-21T01:51:38.0838856Z         "unit",
2026-06-21T01:51:38.0839313Z         "int"
2026-06-21T01:51:38.0839707Z       ],
2026-06-21T01:51:38.0840022Z       "stages": {
2026-06-21T01:51:38.0840360Z         "doc": {
2026-06-21T01:51:38.0840704Z           "complete": false,
2026-06-21T01:51:38.0841099Z           "evidence": []
2026-06-21T01:51:38.0841461Z         },
2026-06-21T01:51:38.0841786Z         "impl": {
2026-06-21T01:51:38.0842127Z           "complete": true,
2026-06-21T01:51:38.0842519Z           "evidence": [
2026-06-21T01:51:38.0842872Z             {
2026-06-21T01:51:38.0843235Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:51:38.0843715Z               "line": 15
2026-06-21T01:51:38.0844069Z             }
2026-06-21T01:51:38.0845463Z           ]
2026-06-21T01:51:38.0845773Z         },
2026-06-21T01:51:38.0846078Z         "int": {
2026-06-21T01:51:38.0846393Z           "complete": true,
2026-06-21T01:51:38.0846727Z           "evidence": [
2026-06-21T01:51:38.0847042Z             {
2026-06-21T01:51:38.0847359Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T01:51:38.0847777Z               "line": 13
2026-06-21T01:51:38.0848072Z             }
2026-06-21T01:51:38.0848335Z           ]
2026-06-21T01:51:38.0848582Z         },
2026-06-21T01:51:38.0848830Z         "unit": {
2026-06-21T01:51:38.0849188Z           "complete": true,
2026-06-21T01:51:38.0849517Z           "evidence": [
2026-06-21T01:51:38.0849820Z             {
2026-06-21T01:51:38.0850123Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:51:38.0850510Z               "line": 717
2026-06-21T01:51:38.0850810Z             },
2026-06-21T01:51:38.0851087Z             {
2026-06-21T01:51:38.0851387Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:51:38.0851779Z               "line": 804
2026-06-21T01:51:38.0852084Z             }
2026-06-21T01:51:38.0852341Z           ]
2026-06-21T01:51:38.0852588Z         }
2026-06-21T01:51:38.0852846Z       }
2026-06-21T01:51:38.0853094Z     },
2026-06-21T01:51:38.0853341Z     {
2026-06-21T01:51:38.0853599Z       "id": "REQ-API-2",
2026-06-21T01:51:38.0854119Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-21T01:51:38.0854702Z       "requiredStages": [
2026-06-21T01:51:38.0855014Z         "impl",
2026-06-21T01:51:38.0855278Z         "unit",
2026-06-21T01:51:38.0855550Z         "int"
2026-06-21T01:51:38.0855813Z       ],
2026-06-21T01:51:38.0856066Z       "stages": {
2026-06-21T01:51:38.0856343Z         "doc": {
2026-06-21T01:51:38.0856657Z           "complete": false,
2026-06-21T01:51:38.0857001Z           "evidence": []
2026-06-21T01:51:38.0857321Z         },
2026-06-21T01:51:38.0857588Z         "impl": {
2026-06-21T01:51:38.0857900Z           "complete": true,
2026-06-21T01:51:38.0858217Z           "evidence": [
2026-06-21T01:51:38.0858503Z             {
2026-06-21T01:51:38.0858838Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T01:51:38.0859830Z               "line": 17
2026-06-21T01:51:38.0860121Z             },
2026-06-21T01:51:38.0860380Z             {
2026-06-21T01:51:38.0860979Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:51:38.0861375Z               "line": 20
2026-06-21T01:51:38.0861661Z             },
2026-06-21T01:51:38.0861919Z             {
2026-06-21T01:51:38.0862238Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:51:38.0862591Z               "line": 142
2026-06-21T01:51:38.0862796Z             },
2026-06-21T01:51:38.0862974Z             {
2026-06-21T01:51:38.0863243Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.0863491Z               "line": 24
2026-06-21T01:51:38.0863735Z             },
2026-06-21T01:51:38.0863901Z             {
2026-06-21T01:51:38.0864107Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.0864398Z               "line": 41
2026-06-21T01:51:38.0864593Z             },
2026-06-21T01:51:38.0864793Z             {
2026-06-21T01:51:38.0864999Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.0865276Z               "line": 213
2026-06-21T01:51:38.0865474Z             },
2026-06-21T01:51:38.0865678Z             {
2026-06-21T01:51:38.0865877Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.0866168Z               "line": 255
2026-06-21T01:51:38.0866359Z             },
2026-06-21T01:51:38.0866531Z             {
2026-06-21T01:51:38.0866777Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.0867036Z               "line": 334
2026-06-21T01:51:38.0867227Z             },
2026-06-21T01:51:38.0867446Z             {
2026-06-21T01:51:38.0867655Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.0867899Z               "line": 397
2026-06-21T01:51:38.0868124Z             },
2026-06-21T01:51:38.0868294Z             {
2026-06-21T01:51:38.0868569Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.0868930Z               "line": 436
2026-06-21T01:51:38.0869451Z             },
2026-06-21T01:51:38.0869702Z             {
2026-06-21T01:51:38.0870012Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:51:38.0870385Z               "line": 17
2026-06-21T01:51:38.0870657Z             },
2026-06-21T01:51:38.0870903Z             {
2026-06-21T01:51:38.0871177Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:51:38.0871534Z               "line": 30
2026-06-21T01:51:38.0871793Z             },
2026-06-21T01:51:38.0872032Z             {
2026-06-21T01:51:38.0872308Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:51:38.0872671Z               "line": 63
2026-06-21T01:51:38.0872947Z             },
2026-06-21T01:51:38.0873175Z             {
2026-06-21T01:51:38.0873447Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:51:38.0873799Z               "line": 77
2026-06-21T01:51:38.0874075Z             }
2026-06-21T01:51:38.0874319Z           ]
2026-06-21T01:51:38.0874568Z         },
2026-06-21T01:51:38.0874815Z         "int": {
2026-06-21T01:51:38.0875072Z           "complete": true,
2026-06-21T01:51:38.0875377Z           "evidence": [
2026-06-21T01:51:38.0875629Z             {
2026-06-21T01:51:38.0875930Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T01:51:38.0876289Z               "line": 14
2026-06-21T01:51:38.0876557Z             },
2026-06-21T01:51:38.0876795Z             {
2026-06-21T01:51:38.0877101Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T01:51:38.0877477Z               "line": 187
2026-06-21T01:51:38.0877750Z             }
2026-06-21T01:51:38.0877991Z           ]
2026-06-21T01:51:38.0878230Z         },
2026-06-21T01:51:38.0878469Z         "unit": {
2026-06-21T01:51:38.0878722Z           "complete": true,
2026-06-21T01:51:38.0879161Z           "evidence": [
2026-06-21T01:51:38.0879677Z             {
2026-06-21T01:51:38.0880035Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T01:51:38.0880693Z               "line": 82
2026-06-21T01:51:38.0880912Z             },
2026-06-21T01:51:38.0881101Z             {
2026-06-21T01:51:38.0881468Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:51:38.0881733Z               "line": 279
2026-06-21T01:51:38.0881928Z             },
2026-06-21T01:51:38.0882114Z             {
2026-06-21T01:51:38.0882344Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.0882615Z               "line": 709
2026-06-21T01:51:38.0882820Z             },
2026-06-21T01:51:38.0883001Z             {
2026-06-21T01:51:38.0883226Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.0883503Z               "line": 720
2026-06-21T01:51:38.0883692Z             },
2026-06-21T01:51:38.0883866Z             {
2026-06-21T01:51:38.0884084Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.0884350Z               "line": 873
2026-06-21T01:51:38.0884561Z             },
2026-06-21T01:51:38.0884740Z             {
2026-06-21T01:51:38.0884964Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.0885237Z               "line": 919
2026-06-21T01:51:38.0885442Z             },
2026-06-21T01:51:38.0885636Z             {
2026-06-21T01:51:38.0885856Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:51:38.0886129Z               "line": 143
2026-06-21T01:51:38.0886338Z             },
2026-06-21T01:51:38.0886514Z             {
2026-06-21T01:51:38.0886714Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:51:38.0886949Z               "line": 187
2026-06-21T01:51:38.0887146Z             }
2026-06-21T01:51:38.0887321Z           ]
2026-06-21T01:51:38.0887498Z         }
2026-06-21T01:51:38.0887680Z       }
2026-06-21T01:51:38.0887841Z     },
2026-06-21T01:51:38.0888014Z     {
2026-06-21T01:51:38.0888208Z       "id": "REQ-API-3",
2026-06-21T01:51:38.0888470Z       "title": "commune/signoff are file-drops, not commands",
2026-06-21T01:51:38.0888766Z       "requiredStages": [
2026-06-21T01:51:38.0889114Z         "impl",
2026-06-21T01:51:38.0889292Z         "unit",
2026-06-21T01:51:38.0889475Z         "int"
2026-06-21T01:51:38.0889665Z       ],
2026-06-21T01:51:38.0889826Z       "stages": {
2026-06-21T01:51:38.0889998Z         "doc": {
2026-06-21T01:51:38.0890193Z           "complete": false,
2026-06-21T01:51:38.0890417Z           "evidence": []
2026-06-21T01:51:38.0890633Z         },
2026-06-21T01:51:38.0890789Z         "impl": {
2026-06-21T01:51:38.0890976Z           "complete": true,
2026-06-21T01:51:38.0891177Z           "evidence": [
2026-06-21T01:51:38.0891357Z             {
2026-06-21T01:51:38.0891553Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:51:38.0891811Z               "line": 27
2026-06-21T01:51:38.0892004Z             },
2026-06-21T01:51:38.0892195Z             {
2026-06-21T01:51:38.0892412Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.0892678Z               "line": 566
2026-06-21T01:51:38.0892865Z             }
2026-06-21T01:51:38.0893051Z           ]
2026-06-21T01:51:38.0893317Z         },
2026-06-21T01:51:38.0922460Z         "int": {
2026-06-21T01:51:38.0922961Z           "complete": true,
2026-06-21T01:51:38.0923299Z           "evidence": [
2026-06-21T01:51:38.0923595Z             {
2026-06-21T01:51:38.0923908Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T01:51:38.0924302Z               "line": 261
2026-06-21T01:51:38.0924584Z             }
2026-06-21T01:51:38.0924851Z           ]
2026-06-21T01:51:38.0925095Z         },
2026-06-21T01:51:38.0925346Z         "unit": {
2026-06-21T01:51:38.0925623Z           "complete": true,
2026-06-21T01:51:38.0925952Z           "evidence": [
2026-06-21T01:51:38.0926233Z             {
2026-06-21T01:51:38.0926543Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:51:38.0926918Z               "line": 280
2026-06-21T01:51:38.0927219Z             },
2026-06-21T01:51:38.0927473Z             {
2026-06-21T01:51:38.0927782Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.0928516Z               "line": 948
2026-06-21T01:51:38.0928811Z             }
2026-06-21T01:51:38.0929295Z           ]
2026-06-21T01:51:38.0929543Z         }
2026-06-21T01:51:38.0929781Z       }
2026-06-21T01:51:38.0930020Z     },
2026-06-21T01:51:38.0930254Z     {
2026-06-21T01:51:38.0930511Z       "id": "REQ-API-4",
2026-06-21T01:51:38.0933306Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-21T01:51:38.0935534Z       "requiredStages": [
2026-06-21T01:51:38.0935825Z         "doc",
2026-06-21T01:51:38.0936102Z         "impl",
2026-06-21T01:51:38.0936360Z         "unit"
2026-06-21T01:51:38.0936623Z       ],
2026-06-21T01:51:38.0936880Z       "stages": {
2026-06-21T01:51:38.0937145Z         "doc": {
2026-06-21T01:51:38.0937412Z           "complete": true,
2026-06-21T01:51:38.0937709Z           "evidence": [
2026-06-21T01:51:38.0937995Z             {
2026-06-21T01:51:38.0938262Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.0938591Z               "line": 149
2026-06-21T01:51:38.0938882Z             }
2026-06-21T01:51:38.0939216Z           ]
2026-06-21T01:51:38.0939461Z         },
2026-06-21T01:51:38.0939702Z         "impl": {
2026-06-21T01:51:38.0939970Z           "complete": true,
2026-06-21T01:51:38.0940270Z           "evidence": [
2026-06-21T01:51:38.0940557Z             {
2026-06-21T01:51:38.0940871Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:51:38.0941271Z               "line": 484
2026-06-21T01:51:38.0941501Z             }
2026-06-21T01:51:38.0941677Z           ]
2026-06-21T01:51:38.0941862Z         },
2026-06-21T01:51:38.0942016Z         "int": {
2026-06-21T01:51:38.0942205Z           "complete": false,
2026-06-21T01:51:38.0942429Z           "evidence": []
2026-06-21T01:51:38.0942617Z         },
2026-06-21T01:51:38.0942785Z         "unit": {
2026-06-21T01:51:38.0942974Z           "complete": true,
2026-06-21T01:51:38.0943171Z           "evidence": [
2026-06-21T01:51:38.0943357Z             {
2026-06-21T01:51:38.0943556Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:51:38.0943847Z               "line": 657
2026-06-21T01:51:38.0944114Z             },
2026-06-21T01:51:38.0944297Z             {
2026-06-21T01:51:38.0944501Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:51:38.0944748Z               "line": 681
2026-06-21T01:51:38.0944934Z             },
2026-06-21T01:51:38.0945103Z             {
2026-06-21T01:51:38.0945309Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:51:38.0945546Z               "line": 705
2026-06-21T01:51:38.0945794Z             }
2026-06-21T01:51:38.0945971Z           ]
2026-06-21T01:51:38.0946171Z         }
2026-06-21T01:51:38.0946428Z       }
2026-06-21T01:51:38.0946606Z     },
2026-06-21T01:51:38.0946815Z     {
2026-06-21T01:51:38.0947077Z       "id": "REQ-ARCH-1",
2026-06-21T01:51:38.0947421Z       "title": "Many small acyclically-layered crates",
2026-06-21T01:51:38.0947820Z       "requiredStages": [
2026-06-21T01:51:38.0948106Z         "impl"
2026-06-21T01:51:38.0948359Z       ],
2026-06-21T01:51:38.0948602Z       "stages": {
2026-06-21T01:51:38.0948874Z         "doc": {
2026-06-21T01:51:38.0949207Z           "complete": false,
2026-06-21T01:51:38.0949518Z           "evidence": []
2026-06-21T01:51:38.0949795Z         },
2026-06-21T01:51:38.0950045Z         "impl": {
2026-06-21T01:51:38.0950315Z           "complete": true,
2026-06-21T01:51:38.0950624Z           "evidence": [
2026-06-21T01:51:38.0950897Z             {
2026-06-21T01:51:38.0951183Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-21T01:51:38.0951765Z               "line": 18
2026-06-21T01:51:38.0952042Z             },
2026-06-21T01:51:38.0952451Z             {
2026-06-21T01:51:38.0952756Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-21T01:51:38.0953143Z               "line": 12
2026-06-21T01:51:38.0953345Z             },
2026-06-21T01:51:38.0953511Z             {
2026-06-21T01:51:38.0953703Z               "path": "crates/spt-store/src/lib.rs",
2026-06-21T01:51:38.0953951Z               "line": 12
2026-06-21T01:51:38.0954130Z             }
2026-06-21T01:51:38.0954303Z           ]
2026-06-21T01:51:38.0954475Z         },
2026-06-21T01:51:38.0954637Z         "int": {
2026-06-21T01:51:38.0954823Z           "complete": false,
2026-06-21T01:51:38.0955037Z           "evidence": []
2026-06-21T01:51:38.0955224Z         },
2026-06-21T01:51:38.0955399Z         "unit": {
2026-06-21T01:51:38.0955593Z           "complete": false,
2026-06-21T01:51:38.0955797Z           "evidence": []
2026-06-21T01:51:38.0955992Z         }
2026-06-21T01:51:38.0956184Z       }
2026-06-21T01:51:38.0956359Z     },
2026-06-21T01:51:38.0956531Z     {
2026-06-21T01:51:38.0956721Z       "id": "REQ-ARCH-2",
2026-06-21T01:51:38.0957003Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-21T01:51:38.0957313Z       "requiredStages": [
2026-06-21T01:51:38.0957513Z         "impl"
2026-06-21T01:51:38.0957685Z       ],
2026-06-21T01:51:38.0957847Z       "stages": {
2026-06-21T01:51:38.0958020Z         "doc": {
2026-06-21T01:51:38.0958194Z           "complete": false,
2026-06-21T01:51:38.0958399Z           "evidence": []
2026-06-21T01:51:38.0958570Z         },
2026-06-21T01:51:38.0958743Z         "impl": {
2026-06-21T01:51:38.0958928Z           "complete": true,
2026-06-21T01:51:38.0959252Z           "evidence": [
2026-06-21T01:51:38.0959444Z             {
2026-06-21T01:51:38.0959644Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-21T01:51:38.0959887Z               "line": 18
2026-06-21T01:51:38.0960068Z             }
2026-06-21T01:51:38.0960240Z           ]
2026-06-21T01:51:38.0960401Z         },
2026-06-21T01:51:38.0960577Z         "int": {
2026-06-21T01:51:38.0960761Z           "complete": false,
2026-06-21T01:51:38.0960971Z           "evidence": []
2026-06-21T01:51:38.0961161Z         },
2026-06-21T01:51:38.0961329Z         "unit": {
2026-06-21T01:51:38.0961509Z           "complete": false,
2026-06-21T01:51:38.0961719Z           "evidence": []
2026-06-21T01:51:38.0961911Z         }
2026-06-21T01:51:38.0962077Z       }
2026-06-21T01:51:38.0962240Z     },
2026-06-21T01:51:38.0962406Z     {
2026-06-21T01:51:38.0962578Z       "id": "REQ-ARCH-3",
2026-06-21T01:51:38.0962889Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-21T01:51:38.0963246Z       "requiredStages": [
2026-06-21T01:51:38.0963434Z         "impl",
2026-06-21T01:51:38.0963824Z         "unit"
2026-06-21T01:51:38.0964028Z       ],
2026-06-21T01:51:38.0964215Z       "stages": {
2026-06-21T01:51:38.0964405Z         "doc": {
2026-06-21T01:51:38.0964601Z           "complete": false,
2026-06-21T01:51:38.0964816Z           "evidence": []
2026-06-21T01:51:38.0965015Z         },
2026-06-21T01:51:38.0965183Z         "impl": {
2026-06-21T01:51:38.0965369Z           "complete": true,
2026-06-21T01:51:38.0965563Z           "evidence": [
2026-06-21T01:51:38.0965746Z             {
2026-06-21T01:51:38.0965954Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T01:51:38.0966205Z               "line": 34
2026-06-21T01:51:38.0966395Z             },
2026-06-21T01:51:38.0966566Z             {
2026-06-21T01:51:38.0966772Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T01:51:38.0967020Z               "line": 41
2026-06-21T01:51:38.0967215Z             }
2026-06-21T01:51:38.0967383Z           ]
2026-06-21T01:51:38.0967548Z         },
2026-06-21T01:51:38.0967707Z         "int": {
2026-06-21T01:51:38.0967882Z           "complete": false,
2026-06-21T01:51:38.0968074Z           "evidence": []
2026-06-21T01:51:38.0968464Z         },
2026-06-21T01:51:38.0968623Z         "unit": {
2026-06-21T01:51:38.0968792Z           "complete": true,
2026-06-21T01:51:38.0969216Z           "evidence": [
2026-06-21T01:51:38.0969399Z             {
2026-06-21T01:51:38.0969599Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T01:51:38.0969856Z               "line": 51
2026-06-21T01:51:38.0970042Z             },
2026-06-21T01:51:38.0970204Z             {
2026-06-21T01:51:38.0970404Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T01:51:38.0970656Z               "line": 71
2026-06-21T01:51:38.0970848Z             },
2026-06-21T01:51:38.0971009Z             {
2026-06-21T01:51:38.0971204Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T01:51:38.0971454Z               "line": 83
2026-06-21T01:51:38.0971645Z             }
2026-06-21T01:51:38.0971817Z           ]
2026-06-21T01:51:38.0971984Z         }
2026-06-21T01:51:38.0972157Z       }
2026-06-21T01:51:38.0972312Z     },
2026-06-21T01:51:38.0972495Z     {
2026-06-21T01:51:38.0972660Z       "id": "REQ-ARCH-4",
2026-06-21T01:51:38.0972937Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-21T01:51:38.0973266Z       "requiredStages": [
2026-06-21T01:51:38.0973458Z         "impl",
2026-06-21T01:51:38.0973634Z         "unit"
2026-06-21T01:51:38.0973801Z       ],
2026-06-21T01:51:38.0973961Z       "stages": {
2026-06-21T01:51:38.0974146Z         "doc": {
2026-06-21T01:51:38.0974336Z           "complete": false,
2026-06-21T01:51:38.0974531Z           "evidence": []
2026-06-21T01:51:38.0974732Z         },
2026-06-21T01:51:38.0974894Z         "impl": {
2026-06-21T01:51:38.0975085Z           "complete": true,
2026-06-21T01:51:38.0975285Z           "evidence": [
2026-06-21T01:51:38.0975490Z             {
2026-06-21T01:51:38.0975700Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.0975973Z               "line": 165
2026-06-21T01:51:38.0976167Z             },
2026-06-21T01:51:38.0976340Z             {
2026-06-21T01:51:38.0976542Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.0976798Z               "line": 188
2026-06-21T01:51:38.0976979Z             },
2026-06-21T01:51:38.0977141Z             {
2026-06-21T01:51:38.0977337Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.0977590Z               "line": 208
2026-06-21T01:51:38.0977766Z             },
2026-06-21T01:51:38.0977928Z             {
2026-06-21T01:51:38.0978123Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.0978367Z               "line": 223
2026-06-21T01:51:38.0978558Z             },
2026-06-21T01:51:38.0978729Z             {
2026-06-21T01:51:38.0978925Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.0979250Z               "line": 273
2026-06-21T01:51:38.0979433Z             }
2026-06-21T01:51:38.0979602Z           ]
2026-06-21T01:51:38.0979767Z         },
2026-06-21T01:51:38.0979930Z         "int": {
2026-06-21T01:51:38.0980126Z           "complete": false,
2026-06-21T01:51:38.0980334Z           "evidence": []
2026-06-21T01:51:38.0980526Z         },
2026-06-21T01:51:38.0980697Z         "unit": {
2026-06-21T01:51:38.0980892Z           "complete": true,
2026-06-21T01:51:38.0981094Z           "evidence": [
2026-06-21T01:51:38.0981279Z             {
2026-06-21T01:51:38.0981471Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.0981712Z               "line": 334
2026-06-21T01:51:38.0981895Z             },
2026-06-21T01:51:38.0982210Z             {
2026-06-21T01:51:38.0982601Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.0982949Z               "line": 344
2026-06-21T01:51:38.0983206Z             },
2026-06-21T01:51:38.0983435Z             {
2026-06-21T01:51:38.0983699Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.0984028Z               "line": 355
2026-06-21T01:51:38.0984271Z             },
2026-06-21T01:51:38.0984484Z             {
2026-06-21T01:51:38.0984954Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.0985269Z               "line": 366
2026-06-21T01:51:38.0985621Z             },
2026-06-21T01:51:38.0985840Z             {
2026-06-21T01:51:38.0986083Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.0986398Z               "line": 378
2026-06-21T01:51:38.0986641Z             },
2026-06-21T01:51:38.0986843Z             {
2026-06-21T01:51:38.0987074Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.0987377Z               "line": 391
2026-06-21T01:51:38.0987621Z             },
2026-06-21T01:51:38.0987816Z             {
2026-06-21T01:51:38.0988048Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.0988349Z               "line": 402
2026-06-21T01:51:38.0988569Z             },
2026-06-21T01:51:38.0988755Z             {
2026-06-21T01:51:38.0989104Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.0989405Z               "line": 419
2026-06-21T01:51:38.0989637Z             },
2026-06-21T01:51:38.1011892Z             {
2026-06-21T01:51:38.1012368Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.1012696Z               "line": 547
2026-06-21T01:51:38.1012897Z             }
2026-06-21T01:51:38.1013074Z           ]
2026-06-21T01:51:38.1013236Z         }
2026-06-21T01:51:38.1013392Z       }
2026-06-21T01:51:38.1013553Z     },
2026-06-21T01:51:38.1013714Z     {
2026-06-21T01:51:38.1013886Z       "id": "REQ-CLI-1",
2026-06-21T01:51:38.1015197Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-21T01:51:38.1016425Z       "requiredStages": [
2026-06-21T01:51:38.1016648Z         "impl",
2026-06-21T01:51:38.1016833Z         "unit"
2026-06-21T01:51:38.1017006Z       ],
2026-06-21T01:51:38.1017182Z       "stages": {
2026-06-21T01:51:38.1017358Z         "doc": {
2026-06-21T01:51:38.1017544Z           "complete": false,
2026-06-21T01:51:38.1017754Z           "evidence": []
2026-06-21T01:51:38.1017960Z         },
2026-06-21T01:51:38.1018126Z         "impl": {
2026-06-21T01:51:38.1018312Z           "complete": true,
2026-06-21T01:51:38.1018523Z           "evidence": [
2026-06-21T01:51:38.1018712Z             {
2026-06-21T01:51:38.1018912Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1019278Z               "line": 225
2026-06-21T01:51:38.1019477Z             },
2026-06-21T01:51:38.1019649Z             {
2026-06-21T01:51:38.1019859Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1020116Z               "line": 1093
2026-06-21T01:51:38.1020307Z             },
2026-06-21T01:51:38.1020480Z             {
2026-06-21T01:51:38.1020678Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1020921Z               "line": 1720
2026-06-21T01:51:38.1021119Z             },
2026-06-21T01:51:38.1021289Z             {
2026-06-21T01:51:38.1021490Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1021717Z               "line": 3124
2026-06-21T01:51:38.1021903Z             }
2026-06-21T01:51:38.1022065Z           ]
2026-06-21T01:51:38.1022241Z         },
2026-06-21T01:51:38.1022405Z         "int": {
2026-06-21T01:51:38.1022585Z           "complete": false,
2026-06-21T01:51:38.1022790Z           "evidence": []
2026-06-21T01:51:38.1022981Z         },
2026-06-21T01:51:38.1023148Z         "unit": {
2026-06-21T01:51:38.1023330Z           "complete": true,
2026-06-21T01:51:38.1023543Z           "evidence": [
2026-06-21T01:51:38.1023739Z             {
2026-06-21T01:51:38.1023919Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1024155Z               "line": 7947
2026-06-21T01:51:38.1024336Z             }
2026-06-21T01:51:38.1024765Z           ]
2026-06-21T01:51:38.1024933Z         }
2026-06-21T01:51:38.1025094Z       }
2026-06-21T01:51:38.1025414Z     },
2026-06-21T01:51:38.1025572Z     {
2026-06-21T01:51:38.1025738Z       "id": "REQ-CLI-2",
2026-06-21T01:51:38.1026550Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-21T01:51:38.1027398Z       "requiredStages": [
2026-06-21T01:51:38.1027585Z         "impl",
2026-06-21T01:51:38.1027775Z         "unit"
2026-06-21T01:51:38.1027938Z       ],
2026-06-21T01:51:38.1028109Z       "stages": {
2026-06-21T01:51:38.1028286Z         "doc": {
2026-06-21T01:51:38.1028468Z           "complete": false,
2026-06-21T01:51:38.1028676Z           "evidence": []
2026-06-21T01:51:38.1028864Z         },
2026-06-21T01:51:38.1029174Z         "impl": {
2026-06-21T01:51:38.1029396Z           "complete": true,
2026-06-21T01:51:38.1029593Z           "evidence": [
2026-06-21T01:51:38.1029785Z             {
2026-06-21T01:51:38.1029989Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1030237Z               "line": 414
2026-06-21T01:51:38.1030434Z             },
2026-06-21T01:51:38.1030599Z             {
2026-06-21T01:51:38.1030804Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T01:51:38.1031064Z               "line": 97
2026-06-21T01:51:38.1031263Z             },
2026-06-21T01:51:38.1031443Z             {
2026-06-21T01:51:38.1031664Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T01:51:38.1031911Z               "line": 256
2026-06-21T01:51:38.1032101Z             },
2026-06-21T01:51:38.1032273Z             {
2026-06-21T01:51:38.1032468Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1032702Z               "line": 434
2026-06-21T01:51:38.1032897Z             },
2026-06-21T01:51:38.1033065Z             {
2026-06-21T01:51:38.1033255Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1033478Z               "line": 1174
2026-06-21T01:51:38.1033674Z             },
2026-06-21T01:51:38.1033851Z             {
2026-06-21T01:51:38.1034027Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1034248Z               "line": 1958
2026-06-21T01:51:38.1034445Z             },
2026-06-21T01:51:38.1034598Z             {
2026-06-21T01:51:38.1034781Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1035016Z               "line": 2047
2026-06-21T01:51:38.1035202Z             },
2026-06-21T01:51:38.1035368Z             {
2026-06-21T01:51:38.1035555Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1035779Z               "line": 2108
2026-06-21T01:51:38.1035969Z             }
2026-06-21T01:51:38.1036147Z           ]
2026-06-21T01:51:38.1036312Z         },
2026-06-21T01:51:38.1036481Z         "int": {
2026-06-21T01:51:38.1036670Z           "complete": false,
2026-06-21T01:51:38.1036880Z           "evidence": []
2026-06-21T01:51:38.1037067Z         },
2026-06-21T01:51:38.1037223Z         "unit": {
2026-06-21T01:51:38.1037403Z           "complete": true,
2026-06-21T01:51:38.1037606Z           "evidence": [
2026-06-21T01:51:38.1037798Z             {
2026-06-21T01:51:38.1037997Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T01:51:38.1038255Z               "line": 338
2026-06-21T01:51:38.1038451Z             },
2026-06-21T01:51:38.1038621Z             {
2026-06-21T01:51:38.1038803Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1039174Z               "line": 8102
2026-06-21T01:51:38.1039371Z             }
2026-06-21T01:51:38.1039547Z           ]
2026-06-21T01:51:38.1039710Z         }
2026-06-21T01:51:38.1039860Z       }
2026-06-21T01:51:38.1040027Z     },
2026-06-21T01:51:38.1040191Z     {
2026-06-21T01:51:38.1040360Z       "id": "REQ-CLI-3",
2026-06-21T01:51:38.1041188Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-21T01:51:38.1042328Z       "requiredStages": [
2026-06-21T01:51:38.1042534Z         "impl",
2026-06-21T01:51:38.1042718Z         "unit"
2026-06-21T01:51:38.1042890Z       ],
2026-06-21T01:51:38.1043061Z       "stages": {
2026-06-21T01:51:38.1043248Z         "doc": {
2026-06-21T01:51:38.1043424Z           "complete": false,
2026-06-21T01:51:38.1043625Z           "evidence": []
2026-06-21T01:51:38.1043810Z         },
2026-06-21T01:51:38.1043977Z         "impl": {
2026-06-21T01:51:38.1044164Z           "complete": true,
2026-06-21T01:51:38.1044353Z           "evidence": [
2026-06-21T01:51:38.1044535Z             {
2026-06-21T01:51:38.1044735Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1044968Z               "line": 1087
2026-06-21T01:51:38.1045158Z             }
2026-06-21T01:51:38.1045323Z           ]
2026-06-21T01:51:38.1045486Z         },
2026-06-21T01:51:38.1045665Z         "int": {
2026-06-21T01:51:38.1045848Z           "complete": false,
2026-06-21T01:51:38.1046058Z           "evidence": []
2026-06-21T01:51:38.1046243Z         },
2026-06-21T01:51:38.1046411Z         "unit": {
2026-06-21T01:51:38.1046591Z           "complete": true,
2026-06-21T01:51:38.1046796Z           "evidence": [
2026-06-21T01:51:38.1046978Z             {
2026-06-21T01:51:38.1047163Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1047398Z               "line": 7912
2026-06-21T01:51:38.1047583Z             }
2026-06-21T01:51:38.1047760Z           ]
2026-06-21T01:51:38.1047925Z         }
2026-06-21T01:51:38.1048081Z       }
2026-06-21T01:51:38.1048242Z     },
2026-06-21T01:51:38.1048405Z     {
2026-06-21T01:51:38.1048581Z       "id": "REQ-CLI-4",
2026-06-21T01:51:38.1051177Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-21T01:51:38.1053142Z       "requiredStages": [],
2026-06-21T01:51:38.1053465Z       "stages": {
2026-06-21T01:51:38.1053760Z         "doc": {
2026-06-21T01:51:38.1054241Z           "complete": false,
2026-06-21T01:51:38.1054551Z           "evidence": []
2026-06-21T01:51:38.1054847Z         },
2026-06-21T01:51:38.1055171Z         "impl": {
2026-06-21T01:51:38.1055518Z           "complete": true,
2026-06-21T01:51:38.1055850Z           "evidence": [
2026-06-21T01:51:38.1056164Z             {
2026-06-21T01:51:38.1056455Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1056827Z               "line": 5678
2026-06-21T01:51:38.1057132Z             }
2026-06-21T01:51:38.1057371Z           ]
2026-06-21T01:51:38.1057695Z         },
2026-06-21T01:51:38.1057977Z         "int": {
2026-06-21T01:51:38.1058310Z           "complete": false,
2026-06-21T01:51:38.1058609Z           "evidence": []
2026-06-21T01:51:38.1058870Z         },
2026-06-21T01:51:38.1059332Z         "unit": {
2026-06-21T01:51:38.1059623Z           "complete": false,
2026-06-21T01:51:38.1059942Z           "evidence": []
2026-06-21T01:51:38.1060252Z         }
2026-06-21T01:51:38.1060525Z       }
2026-06-21T01:51:38.1060854Z     },
2026-06-21T01:51:38.1061100Z     {
2026-06-21T01:51:38.1061417Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-21T01:51:38.1064697Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-21T01:51:38.1068093Z       "requiredStages": [
2026-06-21T01:51:38.1068452Z         "impl",
2026-06-21T01:51:38.1068771Z         "unit"
2026-06-21T01:51:38.1069151Z       ],
2026-06-21T01:51:38.1069430Z       "stages": {
2026-06-21T01:51:38.1069745Z         "doc": {
2026-06-21T01:51:38.1070031Z           "complete": false,
2026-06-21T01:51:38.1070321Z           "evidence": []
2026-06-21T01:51:38.1070670Z         },
2026-06-21T01:51:38.1070985Z         "impl": {
2026-06-21T01:51:38.1071300Z           "complete": true,
2026-06-21T01:51:38.1071617Z           "evidence": [
2026-06-21T01:51:38.1071877Z             {
2026-06-21T01:51:38.1072249Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:51:38.1072592Z               "line": 8
2026-06-21T01:51:38.1072893Z             },
2026-06-21T01:51:38.1073188Z             {
2026-06-21T01:51:38.1073498Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:51:38.1073910Z               "line": 51
2026-06-21T01:51:38.1074186Z             },
2026-06-21T01:51:38.1074508Z             {
2026-06-21T01:51:38.1074822Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:51:38.1075162Z               "line": 82
2026-06-21T01:51:38.1075510Z             },
2026-06-21T01:51:38.1075806Z             {
2026-06-21T01:51:38.1076145Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:51:38.1076493Z               "line": 229
2026-06-21T01:51:38.1076777Z             }
2026-06-21T01:51:38.1077085Z           ]
2026-06-21T01:51:38.1077351Z         },
2026-06-21T01:51:38.1077608Z         "int": {
2026-06-21T01:51:38.1077952Z           "complete": false,
2026-06-21T01:51:38.1078300Z           "evidence": []
2026-06-21T01:51:38.1078624Z         },
2026-06-21T01:51:38.1078877Z         "unit": {
2026-06-21T01:51:38.1079235Z           "complete": true,
2026-06-21T01:51:38.1079586Z           "evidence": [
2026-06-21T01:51:38.1079885Z             {
2026-06-21T01:51:38.1080199Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:51:38.1080557Z               "line": 249
2026-06-21T01:51:38.1080862Z             },
2026-06-21T01:51:38.1081182Z             {
2026-06-21T01:51:38.1081472Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:51:38.1081826Z               "line": 256
2026-06-21T01:51:38.1082134Z             },
2026-06-21T01:51:38.1082390Z             {
2026-06-21T01:51:38.1082719Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:51:38.1083104Z               "line": 263
2026-06-21T01:51:38.1083410Z             },
2026-06-21T01:51:38.1083700Z             {
2026-06-21T01:51:38.1083997Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:51:38.1084392Z               "line": 270
2026-06-21T01:51:38.1084693Z             },
2026-06-21T01:51:38.1084964Z             {
2026-06-21T01:51:38.1085330Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:51:38.1085702Z               "line": 297
2026-06-21T01:51:38.1086046Z             },
2026-06-21T01:51:38.1086317Z             {
2026-06-21T01:51:38.1086766Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:51:38.1087180Z               "line": 307
2026-06-21T01:51:38.1087592Z             },
2026-06-21T01:51:38.1087902Z             {
2026-06-21T01:51:38.1088211Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:51:38.1088579Z               "line": 317
2026-06-21T01:51:38.1088928Z             },
2026-06-21T01:51:38.1089361Z             {
2026-06-21T01:51:38.1089690Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:51:38.1090038Z               "line": 331
2026-06-21T01:51:38.1090336Z             },
2026-06-21T01:51:38.1090636Z             {
2026-06-21T01:51:38.1090970Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:51:38.1091328Z               "line": 340
2026-06-21T01:51:38.1091632Z             },
2026-06-21T01:51:38.1091895Z             {
2026-06-21T01:51:38.1092219Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:51:38.1092571Z               "line": 348
2026-06-21T01:51:38.1092842Z             }
2026-06-21T01:51:38.1093194Z           ]
2026-06-21T01:51:38.1093499Z         }
2026-06-21T01:51:38.1093818Z       }
2026-06-21T01:51:38.1094081Z     },
2026-06-21T01:51:38.1094318Z     {
2026-06-21T01:51:38.1094672Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-21T01:51:38.1104473Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-21T01:51:38.1108789Z       "requiredStages": [
2026-06-21T01:51:38.1109176Z         "impl",
2026-06-21T01:51:38.1109538Z         "unit"
2026-06-21T01:51:38.1109800Z       ],
2026-06-21T01:51:38.1110110Z       "stages": {
2026-06-21T01:51:38.1110411Z         "doc": {
2026-06-21T01:51:38.1110702Z           "complete": false,
2026-06-21T01:51:38.1111083Z           "evidence": []
2026-06-21T01:51:38.1111353Z         },
2026-06-21T01:51:38.1111656Z         "impl": {
2026-06-21T01:51:38.1111937Z           "complete": true,
2026-06-21T01:51:38.1112247Z           "evidence": [
2026-06-21T01:51:38.1112571Z             {
2026-06-21T01:51:38.1112881Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1113311Z               "line": 141
2026-06-21T01:51:38.1113617Z             },
2026-06-21T01:51:38.1113891Z             {
2026-06-21T01:51:38.1114227Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1114557Z               "line": 1376
2026-06-21T01:51:38.1114843Z             },
2026-06-21T01:51:38.1115172Z             {
2026-06-21T01:51:38.1115511Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1115883Z               "line": 2145
2026-06-21T01:51:38.1116174Z             },
2026-06-21T01:51:38.1116729Z             {
2026-06-21T01:51:38.1117083Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1117546Z               "line": 4368
2026-06-21T01:51:38.1117846Z             },
2026-06-21T01:51:38.1118137Z             {
2026-06-21T01:51:38.1118437Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1118837Z               "line": 4466
2026-06-21T01:51:38.1119201Z             },
2026-06-21T01:51:38.1119511Z             {
2026-06-21T01:51:38.1119802Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1120107Z               "line": 5257
2026-06-21T01:51:38.1120450Z             },
2026-06-21T01:51:38.1120703Z             {
2026-06-21T01:51:38.1121065Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:51:38.1121418Z               "line": 39
2026-06-21T01:51:38.1121709Z             }
2026-06-21T01:51:38.1122002Z           ]
2026-06-21T01:51:38.1122254Z         },
2026-06-21T01:51:38.1122506Z         "int": {
2026-06-21T01:51:38.1122846Z           "complete": false,
2026-06-21T01:51:38.1123190Z           "evidence": []
2026-06-21T01:51:38.1123500Z         },
2026-06-21T01:51:38.1123771Z         "unit": {
2026-06-21T01:51:38.1124042Z           "complete": true,
2026-06-21T01:51:38.1124389Z           "evidence": [
2026-06-21T01:51:38.1124672Z             {
2026-06-21T01:51:38.1132213Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1132539Z               "line": 10272
2026-06-21T01:51:38.1132747Z             },
2026-06-21T01:51:38.1132915Z             {
2026-06-21T01:51:38.1133111Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:51:38.1133377Z               "line": 281
2026-06-21T01:51:38.1133577Z             },
2026-06-21T01:51:38.1133745Z             {
2026-06-21T01:51:38.1133944Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:51:38.1134183Z               "line": 358
2026-06-21T01:51:38.1134370Z             },
2026-06-21T01:51:38.1134540Z             {
2026-06-21T01:51:38.1134746Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:51:38.1134987Z               "line": 381
2026-06-21T01:51:38.1135186Z             },
2026-06-21T01:51:38.1135362Z             {
2026-06-21T01:51:38.1135547Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:51:38.1135782Z               "line": 395
2026-06-21T01:51:38.1135968Z             }
2026-06-21T01:51:38.1136140Z           ]
2026-06-21T01:51:38.1136302Z         }
2026-06-21T01:51:38.1136473Z       }
2026-06-21T01:51:38.1136631Z     },
2026-06-21T01:51:38.1136798Z     {
2026-06-21T01:51:38.1137008Z       "id": "REQ-CONSENT-1",
2026-06-21T01:51:38.1138018Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-21T01:51:38.1139186Z       "requiredStages": [
2026-06-21T01:51:38.1139394Z         "impl",
2026-06-21T01:51:38.1139572Z         "unit"
2026-06-21T01:51:38.1139743Z       ],
2026-06-21T01:51:38.1139901Z       "stages": {
2026-06-21T01:51:38.1140075Z         "doc": {
2026-06-21T01:51:38.1140260Z           "complete": false,
2026-06-21T01:51:38.1140469Z           "evidence": []
2026-06-21T01:51:38.1140645Z         },
2026-06-21T01:51:38.1140813Z         "impl": {
2026-06-21T01:51:38.1140993Z           "complete": true,
2026-06-21T01:51:38.1141189Z           "evidence": [
2026-06-21T01:51:38.1141360Z             {
2026-06-21T01:51:38.1141585Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:51:38.1141828Z               "line": 27
2026-06-21T01:51:38.1142004Z             },
2026-06-21T01:51:38.1142161Z             {
2026-06-21T01:51:38.1142363Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:51:38.1142601Z               "line": 75
2026-06-21T01:51:38.1142777Z             },
2026-06-21T01:51:38.1143212Z             {
2026-06-21T01:51:38.1143408Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:51:38.1143776Z               "line": 98
2026-06-21T01:51:38.1143952Z             },
2026-06-21T01:51:38.1144114Z             {
2026-06-21T01:51:38.1144310Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T01:51:38.1144557Z               "line": 82
2026-06-21T01:51:38.1144743Z             },
2026-06-21T01:51:38.1144901Z             {
2026-06-21T01:51:38.1145100Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T01:51:38.1145349Z               "line": 109
2026-06-21T01:51:38.1145538Z             },
2026-06-21T01:51:38.1145703Z             {
2026-06-21T01:51:38.1145893Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T01:51:38.1146126Z               "line": 127
2026-06-21T01:51:38.1146309Z             },
2026-06-21T01:51:38.1146475Z             {
2026-06-21T01:51:38.1146661Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T01:51:38.1146914Z               "line": 142
2026-06-21T01:51:38.1147094Z             },
2026-06-21T01:51:38.1147262Z             {
2026-06-21T01:51:38.1147448Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1147682Z               "line": 7048
2026-06-21T01:51:38.1147869Z             }
2026-06-21T01:51:38.1148020Z           ]
2026-06-21T01:51:38.1148183Z         },
2026-06-21T01:51:38.1148333Z         "int": {
2026-06-21T01:51:38.1148516Z           "complete": false,
2026-06-21T01:51:38.1148725Z           "evidence": []
2026-06-21T01:51:38.1148907Z         },
2026-06-21T01:51:38.1149174Z         "unit": {
2026-06-21T01:51:38.1149349Z           "complete": true,
2026-06-21T01:51:38.1149549Z           "evidence": [
2026-06-21T01:51:38.1149732Z             {
2026-06-21T01:51:38.1149936Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:51:38.1150184Z               "line": 334
2026-06-21T01:51:38.1150371Z             },
2026-06-21T01:51:38.1150536Z             {
2026-06-21T01:51:38.1150736Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:51:38.1150971Z               "line": 380
2026-06-21T01:51:38.1151158Z             },
2026-06-21T01:51:38.1151315Z             {
2026-06-21T01:51:38.1151511Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:51:38.1151759Z               "line": 391
2026-06-21T01:51:38.1151950Z             },
2026-06-21T01:51:38.1152112Z             {
2026-06-21T01:51:38.1152303Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T01:51:38.1152536Z               "line": 165
2026-06-21T01:51:38.1152722Z             },
2026-06-21T01:51:38.1152889Z             {
2026-06-21T01:51:38.1153079Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T01:51:38.1153305Z               "line": 184
2026-06-21T01:51:38.1153493Z             },
2026-06-21T01:51:38.1153655Z             {
2026-06-21T01:51:38.1153838Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T01:51:38.1154082Z               "line": 204
2026-06-21T01:51:38.1154264Z             },
2026-06-21T01:51:38.1154425Z             {
2026-06-21T01:51:38.1154616Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1154846Z               "line": 8334
2026-06-21T01:51:38.1155031Z             }
2026-06-21T01:51:38.1155185Z           ]
2026-06-21T01:51:38.1155341Z         }
2026-06-21T01:51:38.1155495Z       }
2026-06-21T01:51:38.1155660Z     },
2026-06-21T01:51:38.1155819Z     {
2026-06-21T01:51:38.1155989Z       "id": "REQ-CONSENT-2",
2026-06-21T01:51:38.1156917Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-21T01:51:38.1157875Z       "requiredStages": [
2026-06-21T01:51:38.1158076Z         "impl",
2026-06-21T01:51:38.1158386Z         "unit"
2026-06-21T01:51:38.1158546Z       ],
2026-06-21T01:51:38.1158701Z       "stages": {
2026-06-21T01:51:38.1159095Z         "doc": {
2026-06-21T01:51:38.1159275Z           "complete": false,
2026-06-21T01:51:38.1159476Z           "evidence": []
2026-06-21T01:51:38.1159663Z         },
2026-06-21T01:51:38.1159833Z         "impl": {
2026-06-21T01:51:38.1160015Z           "complete": true,
2026-06-21T01:51:38.1160214Z           "evidence": [
2026-06-21T01:51:38.1160401Z             {
2026-06-21T01:51:38.1160592Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:51:38.1160848Z               "line": 140
2026-06-21T01:51:38.1161036Z             },
2026-06-21T01:51:38.1161205Z             {
2026-06-21T01:51:38.1161409Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:51:38.1161652Z               "line": 165
2026-06-21T01:51:38.1161827Z             },
2026-06-21T01:51:38.1161990Z             {
2026-06-21T01:51:38.1162180Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:51:38.1162437Z               "line": 199
2026-06-21T01:51:38.1162620Z             },
2026-06-21T01:51:38.1162786Z             {
2026-06-21T01:51:38.1162981Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:51:38.1163226Z               "line": 241
2026-06-21T01:51:38.1163410Z             },
2026-06-21T01:51:38.1163579Z             {
2026-06-21T01:51:38.1163769Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:51:38.1164015Z               "line": 269
2026-06-21T01:51:38.1164197Z             },
2026-06-21T01:51:38.1164366Z             {
2026-06-21T01:51:38.1164557Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:51:38.1164786Z               "line": 300
2026-06-21T01:51:38.1164976Z             },
2026-06-21T01:51:38.1165144Z             {
2026-06-21T01:51:38.1165319Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1165548Z               "line": 6839
2026-06-21T01:51:38.1165730Z             },
2026-06-21T01:51:38.1165901Z             {
2026-06-21T01:51:38.1166088Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1166321Z               "line": 6897
2026-06-21T01:51:38.1166506Z             }
2026-06-21T01:51:38.1166663Z           ]
2026-06-21T01:51:38.1166828Z         },
2026-06-21T01:51:38.1166990Z         "int": {
2026-06-21T01:51:38.1167171Z           "complete": false,
2026-06-21T01:51:38.1167381Z           "evidence": []
2026-06-21T01:51:38.1167634Z         },
2026-06-21T01:51:38.1167805Z         "unit": {
2026-06-21T01:51:38.1167983Z           "complete": true,
2026-06-21T01:51:38.1168181Z           "evidence": [
2026-06-21T01:51:38.1168359Z             {
2026-06-21T01:51:38.1168563Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:51:38.1168811Z               "line": 419
2026-06-21T01:51:38.1169116Z             },
2026-06-21T01:51:38.1169290Z             {
2026-06-21T01:51:38.1169482Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:51:38.1169712Z               "line": 436
2026-06-21T01:51:38.1169903Z             },
2026-06-21T01:51:38.1170055Z             {
2026-06-21T01:51:38.1170251Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:51:38.1170484Z               "line": 472
2026-06-21T01:51:38.1170675Z             },
2026-06-21T01:51:38.1170827Z             {
2026-06-21T01:51:38.1171018Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:51:38.1171262Z               "line": 516
2026-06-21T01:51:38.1171447Z             },
2026-06-21T01:51:38.1171609Z             {
2026-06-21T01:51:38.1171784Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1172016Z               "line": 9614
2026-06-21T01:51:38.1172203Z             },
2026-06-21T01:51:38.1172373Z             {
2026-06-21T01:51:38.1172550Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1172780Z               "line": 9696
2026-06-21T01:51:38.1172960Z             }
2026-06-21T01:51:38.1173123Z           ]
2026-06-21T01:51:38.1173433Z         }
2026-06-21T01:51:38.1173599Z       }
2026-06-21T01:51:38.1173757Z     },
2026-06-21T01:51:38.1174024Z     {
2026-06-21T01:51:38.1174209Z       "id": "REQ-CONSENT-3",
2026-06-21T01:51:38.1176404Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-21T01:51:38.1178247Z       "requiredStages": [
2026-06-21T01:51:38.1178456Z         "doc",
2026-06-21T01:51:38.1178628Z         "impl",
2026-06-21T01:51:38.1178823Z         "unit",
2026-06-21T01:51:38.1179318Z         "int"
2026-06-21T01:51:38.1179501Z       ],
2026-06-21T01:51:38.1179681Z       "stages": {
2026-06-21T01:51:38.1179855Z         "doc": {
2026-06-21T01:51:38.1180038Z           "complete": true,
2026-06-21T01:51:38.1180239Z           "evidence": [
2026-06-21T01:51:38.1180424Z             {
2026-06-21T01:51:38.1180615Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.1180840Z               "line": 304
2026-06-21T01:51:38.1181024Z             }
2026-06-21T01:51:38.1181192Z           ]
2026-06-21T01:51:38.1181349Z         },
2026-06-21T01:51:38.1181512Z         "impl": {
2026-06-21T01:51:38.1181688Z           "complete": true,
2026-06-21T01:51:38.1181897Z           "evidence": [
2026-06-21T01:51:38.1182076Z             {
2026-06-21T01:51:38.1182292Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.1182562Z               "line": 123
2026-06-21T01:51:38.1182753Z             },
2026-06-21T01:51:38.1182909Z             {
2026-06-21T01:51:38.1183116Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.1183368Z               "line": 162
2026-06-21T01:51:38.1183553Z             },
2026-06-21T01:51:38.1183716Z             {
2026-06-21T01:51:38.1183916Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.1184007Z               "line": 291
2026-06-21T01:51:38.1184093Z             },
2026-06-21T01:51:38.1184178Z             {
2026-06-21T01:51:38.1184304Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.1184388Z               "line": 574
2026-06-21T01:51:38.1184479Z             },
2026-06-21T01:51:38.1184570Z             {
2026-06-21T01:51:38.1184689Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.1184783Z               "line": 824
2026-06-21T01:51:38.1184865Z             },
2026-06-21T01:51:38.1184952Z             {
2026-06-21T01:51:38.1185060Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1185145Z               "line": 6965
2026-06-21T01:51:38.1185236Z             }
2026-06-21T01:51:38.1185321Z           ]
2026-06-21T01:51:38.1185410Z         },
2026-06-21T01:51:38.1185495Z         "int": {
2026-06-21T01:51:38.1185582Z           "complete": true,
2026-06-21T01:51:38.1185677Z           "evidence": [
2026-06-21T01:51:38.1185767Z             {
2026-06-21T01:51:38.1185902Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T01:51:38.1185992Z               "line": 16
2026-06-21T01:51:38.1186073Z             }
2026-06-21T01:51:38.1186158Z           ]
2026-06-21T01:51:38.1186245Z         },
2026-06-21T01:51:38.1186330Z         "unit": {
2026-06-21T01:51:38.1186434Z           "complete": true,
2026-06-21T01:51:38.1186541Z           "evidence": [
2026-06-21T01:51:38.1186631Z             {
2026-06-21T01:51:38.1186754Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.1186846Z               "line": 1019
2026-06-21T01:51:38.1186937Z             },
2026-06-21T01:51:38.1187171Z             {
2026-06-21T01:51:38.1187312Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.1187509Z               "line": 1066
2026-06-21T01:51:38.1187594Z             },
2026-06-21T01:51:38.1187693Z             {
2026-06-21T01:51:38.1187817Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.1187916Z               "line": 1394
2026-06-21T01:51:38.1188000Z             }
2026-06-21T01:51:38.1188081Z           ]
2026-06-21T01:51:38.1188167Z         }
2026-06-21T01:51:38.1188250Z       }
2026-06-21T01:51:38.1188343Z     },
2026-06-21T01:51:38.1188425Z     {
2026-06-21T01:51:38.1188568Z       "id": "REQ-CONV-1",
2026-06-21T01:51:38.1190165Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-21T01:51:38.1190294Z       "requiredStages": [
2026-06-21T01:51:38.1190381Z         "impl",
2026-06-21T01:51:38.1190466Z         "unit"
2026-06-21T01:51:38.1190546Z       ],
2026-06-21T01:51:38.1190626Z       "stages": {
2026-06-21T01:51:38.1190718Z         "doc": {
2026-06-21T01:51:38.1190818Z           "complete": false,
2026-06-21T01:51:38.1190908Z           "evidence": []
2026-06-21T01:51:38.1190989Z         },
2026-06-21T01:51:38.1191071Z         "impl": {
2026-06-21T01:51:38.1191156Z           "complete": true,
2026-06-21T01:51:38.1191242Z           "evidence": [
2026-06-21T01:51:38.1191338Z             {
2026-06-21T01:51:38.1191462Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.1191551Z               "line": 938
2026-06-21T01:51:38.1191638Z             },
2026-06-21T01:51:38.1191714Z             {
2026-06-21T01:51:38.1191833Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.1191923Z               "line": 94
2026-06-21T01:51:38.1192011Z             },
2026-06-21T01:51:38.1192100Z             {
2026-06-21T01:51:38.1192210Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.1192297Z               "line": 345
2026-06-21T01:51:38.1192382Z             },
2026-06-21T01:51:38.1192467Z             {
2026-06-21T01:51:38.1192582Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.1192673Z               "line": 387
2026-06-21T01:51:38.1192762Z             },
2026-06-21T01:51:38.1192847Z             {
2026-06-21T01:51:38.1192967Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.1193042Z               "line": 472
2026-06-21T01:51:38.1193136Z             },
2026-06-21T01:51:38.1193222Z             {
2026-06-21T01:51:38.1193328Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.1193422Z               "line": 667
2026-06-21T01:51:38.1193503Z             },
2026-06-21T01:51:38.1193590Z             {
2026-06-21T01:51:38.1193699Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.1193785Z               "line": 693
2026-06-21T01:51:38.1193871Z             },
2026-06-21T01:51:38.1193957Z             {
2026-06-21T01:51:38.1194080Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.1194161Z               "line": 369
2026-06-21T01:51:38.1194243Z             },
2026-06-21T01:51:38.1194329Z             {
2026-06-21T01:51:38.1194447Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T01:51:38.1194544Z               "line": 19
2026-06-21T01:51:38.1194624Z             }
2026-06-21T01:51:38.1194710Z           ]
2026-06-21T01:51:38.1194795Z         },
2026-06-21T01:51:38.1194873Z         "int": {
2026-06-21T01:51:38.1194958Z           "complete": false,
2026-06-21T01:51:38.1195058Z           "evidence": []
2026-06-21T01:51:38.1195263Z         },
2026-06-21T01:51:38.1195353Z         "unit": {
2026-06-21T01:51:38.1195455Z           "complete": true,
2026-06-21T01:51:38.1195649Z           "evidence": [
2026-06-21T01:51:38.1195738Z             {
2026-06-21T01:51:38.1195844Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.1195942Z               "line": 1263
2026-06-21T01:51:38.1196022Z             },
2026-06-21T01:51:38.1196108Z             {
2026-06-21T01:51:38.1196233Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T01:51:38.1196323Z               "line": 108
2026-06-21T01:51:38.1196413Z             },
2026-06-21T01:51:38.1196495Z             {
2026-06-21T01:51:38.1196628Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T01:51:38.1196733Z               "line": 134
2026-06-21T01:51:38.1196815Z             },
2026-06-21T01:51:38.1196905Z             {
2026-06-21T01:51:38.1197028Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T01:51:38.1197134Z               "line": 144
2026-06-21T01:51:38.1197219Z             }
2026-06-21T01:51:38.1197314Z           ]
2026-06-21T01:51:38.1197416Z         }
2026-06-21T01:51:38.1197497Z       }
2026-06-21T01:51:38.1197581Z     },
2026-06-21T01:51:38.1197663Z     {
2026-06-21T01:51:38.1197759Z       "id": "REQ-CONV-2",
2026-06-21T01:51:38.1198889Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-21T01:51:38.1199100Z       "requiredStages": [
2026-06-21T01:51:38.1199195Z         "impl",
2026-06-21T01:51:38.1199285Z         "unit"
2026-06-21T01:51:38.1199367Z       ],
2026-06-21T01:51:38.1199452Z       "stages": {
2026-06-21T01:51:38.1199542Z         "doc": {
2026-06-21T01:51:38.1199649Z           "complete": false,
2026-06-21T01:51:38.1199734Z           "evidence": []
2026-06-21T01:51:38.1199820Z         },
2026-06-21T01:51:38.1199915Z         "impl": {
2026-06-21T01:51:38.1200002Z           "complete": true,
2026-06-21T01:51:38.1200086Z           "evidence": [
2026-06-21T01:51:38.1200172Z             {
2026-06-21T01:51:38.1200316Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1200401Z               "line": 409
2026-06-21T01:51:38.1200492Z             },
2026-06-21T01:51:38.1200573Z             {
2026-06-21T01:51:38.1200702Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T01:51:38.1200782Z               "line": 119
2026-06-21T01:51:38.1200864Z             },
2026-06-21T01:51:38.1200955Z             {
2026-06-21T01:51:38.1201082Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.1201168Z               "line": 841
2026-06-21T01:51:38.1201254Z             },
2026-06-21T01:51:38.1201335Z             {
2026-06-21T01:51:38.1201458Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.1201549Z               "line": 852
2026-06-21T01:51:38.1201636Z             },
2026-06-21T01:51:38.1201721Z             {
2026-06-21T01:51:38.1201844Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.1201932Z               "line": 334
2026-06-21T01:51:38.1202022Z             },
2026-06-21T01:51:38.1202107Z             {
2026-06-21T01:51:38.1202203Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1202303Z               "line": 3074
2026-06-21T01:51:38.1202379Z             },
2026-06-21T01:51:38.1202465Z             {
2026-06-21T01:51:38.1202571Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1202665Z               "line": 3090
2026-06-21T01:51:38.1202755Z             },
2026-06-21T01:51:38.1202838Z             {
2026-06-21T01:51:38.1202942Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1203037Z               "line": 3170
2026-06-21T01:51:38.1203248Z             }
2026-06-21T01:51:38.1203337Z           ]
2026-06-21T01:51:38.1203503Z         },
2026-06-21T01:51:38.1203593Z         "int": {
2026-06-21T01:51:38.1203682Z           "complete": false,
2026-06-21T01:51:38.1203782Z           "evidence": []
2026-06-21T01:51:38.1203854Z         },
2026-06-21T01:51:38.1203945Z         "unit": {
2026-06-21T01:51:38.1204035Z           "complete": true,
2026-06-21T01:51:38.1204121Z           "evidence": [
2026-06-21T01:51:38.1204212Z             {
2026-06-21T01:51:38.1204340Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.1204426Z               "line": 889
2026-06-21T01:51:38.1204512Z             },
2026-06-21T01:51:38.1204593Z             {
2026-06-21T01:51:38.1204711Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.1204818Z               "line": 1014
2026-06-21T01:51:38.1204894Z             },
2026-06-21T01:51:38.1204979Z             {
2026-06-21T01:51:38.1205123Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T01:51:38.1205208Z               "line": 215
2026-06-21T01:51:38.1205298Z             }
2026-06-21T01:51:38.1205380Z           ]
2026-06-21T01:51:38.1205466Z         }
2026-06-21T01:51:38.1205556Z       }
2026-06-21T01:51:38.1205913Z     },
2026-06-21T01:51:38.1206048Z     {
2026-06-21T01:51:38.1286569Z       "id": "REQ-DAEMON-1",
2026-06-21T01:51:38.1287175Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-21T01:51:38.1287299Z       "requiredStages": [
2026-06-21T01:51:38.1287400Z         "impl",
2026-06-21T01:51:38.1287503Z         "unit",
2026-06-21T01:51:38.1287595Z         "int"
2026-06-21T01:51:38.1287677Z       ],
2026-06-21T01:51:38.1287775Z       "stages": {
2026-06-21T01:51:38.1287865Z         "doc": {
2026-06-21T01:51:38.1287956Z           "complete": false,
2026-06-21T01:51:38.1288065Z           "evidence": []
2026-06-21T01:51:38.1288139Z         },
2026-06-21T01:51:38.1288224Z         "impl": {
2026-06-21T01:51:38.1288407Z           "complete": true,
2026-06-21T01:51:38.1288492Z           "evidence": [
2026-06-21T01:51:38.1288588Z             {
2026-06-21T01:51:38.1288721Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1288811Z               "line": 229
2026-06-21T01:51:38.1288897Z             },
2026-06-21T01:51:38.1289070Z             {
2026-06-21T01:51:38.1289197Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:51:38.1289299Z               "line": 12
2026-06-21T01:51:38.1289389Z             },
2026-06-21T01:51:38.1289474Z             {
2026-06-21T01:51:38.1289604Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1289684Z               "line": 16
2026-06-21T01:51:38.1289775Z             },
2026-06-21T01:51:38.1289856Z             {
2026-06-21T01:51:38.1289980Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1290066Z               "line": 309
2026-06-21T01:51:38.1290151Z             },
2026-06-21T01:51:38.1290244Z             {
2026-06-21T01:51:38.1290366Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1290452Z               "line": 24
2026-06-21T01:51:38.1290534Z             },
2026-06-21T01:51:38.1290624Z             {
2026-06-21T01:51:38.1290746Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1290832Z               "line": 262
2026-06-21T01:51:38.1290913Z             },
2026-06-21T01:51:38.1290992Z             {
2026-06-21T01:51:38.1291106Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1291193Z               "line": 279
2026-06-21T01:51:38.1291284Z             },
2026-06-21T01:51:38.1291373Z             {
2026-06-21T01:51:38.1291488Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1291584Z               "line": 356
2026-06-21T01:51:38.1291669Z             },
2026-06-21T01:51:38.1291754Z             {
2026-06-21T01:51:38.1291870Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1292213Z               "line": 670
2026-06-21T01:51:38.1292299Z             },
2026-06-21T01:51:38.1292486Z             {
2026-06-21T01:51:38.1292608Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T01:51:38.1292694Z               "line": 15
2026-06-21T01:51:38.1292782Z             },
2026-06-21T01:51:38.1292862Z             {
2026-06-21T01:51:38.1292981Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.1293077Z               "line": 241
2026-06-21T01:51:38.1293162Z             },
2026-06-21T01:51:38.1293252Z             {
2026-06-21T01:51:38.1293356Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T01:51:38.1293442Z               "line": 13
2026-06-21T01:51:38.1293527Z             },
2026-06-21T01:51:38.1293611Z             {
2026-06-21T01:51:38.1293735Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.1293817Z               "line": 382
2026-06-21T01:51:38.1293917Z             },
2026-06-21T01:51:38.1294002Z             {
2026-06-21T01:51:38.1294108Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.1294213Z               "line": 494
2026-06-21T01:51:38.1294292Z             }
2026-06-21T01:51:38.1294375Z           ]
2026-06-21T01:51:38.1294461Z         },
2026-06-21T01:51:38.1294546Z         "int": {
2026-06-21T01:51:38.1294641Z           "complete": true,
2026-06-21T01:51:38.1294732Z           "evidence": [
2026-06-21T01:51:38.1294822Z             {
2026-06-21T01:51:38.1294989Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T01:51:38.1295081Z               "line": 2
2026-06-21T01:51:38.1295161Z             },
2026-06-21T01:51:38.1295242Z             {
2026-06-21T01:51:38.1295396Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T01:51:38.1295485Z               "line": 16
2026-06-21T01:51:38.1295566Z             },
2026-06-21T01:51:38.1295649Z             {
2026-06-21T01:51:38.1295804Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-21T01:51:38.1295890Z               "line": 12
2026-06-21T01:51:38.1295983Z             },
2026-06-21T01:51:38.1296054Z             {
2026-06-21T01:51:38.1296180Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-21T01:51:38.1296280Z               "line": 12
2026-06-21T01:51:38.1296353Z             },
2026-06-21T01:51:38.1296443Z             {
2026-06-21T01:51:38.1296585Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T01:51:38.1296687Z               "line": 44
2026-06-21T01:51:38.1296772Z             }
2026-06-21T01:51:38.1296857Z           ]
2026-06-21T01:51:38.1296949Z         },
2026-06-21T01:51:38.1297034Z         "unit": {
2026-06-21T01:51:38.1297134Z           "complete": true,
2026-06-21T01:51:38.1297225Z           "evidence": [
2026-06-21T01:51:38.1297311Z             {
2026-06-21T01:51:38.1297439Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:51:38.1297534Z               "line": 285
2026-06-21T01:51:38.1297622Z             },
2026-06-21T01:51:38.1297711Z             {
2026-06-21T01:51:38.1297835Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:51:38.1297922Z               "line": 293
2026-06-21T01:51:38.1298007Z             },
2026-06-21T01:51:38.1298078Z             {
2026-06-21T01:51:38.1298193Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:51:38.1298294Z               "line": 309
2026-06-21T01:51:38.1298378Z             },
2026-06-21T01:51:38.1298463Z             {
2026-06-21T01:51:38.1298573Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:51:38.1298667Z               "line": 317
2026-06-21T01:51:38.1298752Z             },
2026-06-21T01:51:38.1298838Z             {
2026-06-21T01:51:38.1299043Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1299133Z               "line": 659
2026-06-21T01:51:38.1299215Z             },
2026-06-21T01:51:38.1299405Z             {
2026-06-21T01:51:38.1299535Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1299719Z               "line": 729
2026-06-21T01:51:38.1299802Z             },
2026-06-21T01:51:38.1299887Z             {
2026-06-21T01:51:38.1300015Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1300111Z               "line": 1211
2026-06-21T01:51:38.1300193Z             },
2026-06-21T01:51:38.1300278Z             {
2026-06-21T01:51:38.1300401Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1300484Z               "line": 1248
2026-06-21T01:51:38.1300573Z             },
2026-06-21T01:51:38.1300654Z             {
2026-06-21T01:51:38.1300784Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1300865Z               "line": 1271
2026-06-21T01:51:38.1300955Z             },
2026-06-21T01:51:38.1301041Z             {
2026-06-21T01:51:38.1301152Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1301240Z               "line": 1300
2026-06-21T01:51:38.1301321Z             },
2026-06-21T01:51:38.1301416Z             {
2026-06-21T01:51:38.1301529Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1301614Z               "line": 1348
2026-06-21T01:51:38.1301700Z             },
2026-06-21T01:51:38.1301782Z             {
2026-06-21T01:51:38.1301905Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1301985Z               "line": 1391
2026-06-21T01:51:38.1302073Z             },
2026-06-21T01:51:38.1302149Z             {
2026-06-21T01:51:38.1302272Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T01:51:38.1302373Z               "line": 106
2026-06-21T01:51:38.1302454Z             },
2026-06-21T01:51:38.1302544Z             {
2026-06-21T01:51:38.1302659Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T01:51:38.1302750Z               "line": 132
2026-06-21T01:51:38.1302835Z             },
2026-06-21T01:51:38.1302916Z             {
2026-06-21T01:51:38.1303027Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.1303121Z               "line": 530
2026-06-21T01:51:38.1303202Z             }
2026-06-21T01:51:38.1303293Z           ]
2026-06-21T01:51:38.1303370Z         }
2026-06-21T01:51:38.1303459Z       }
2026-06-21T01:51:38.1303546Z     },
2026-06-21T01:51:38.1303632Z     {
2026-06-21T01:51:38.1303722Z       "id": "REQ-DAEMON-2",
2026-06-21T01:51:38.1303873Z       "title": "Broker/brain split for seamless self-update",
2026-06-21T01:51:38.1303964Z       "requiredStages": [
2026-06-21T01:51:38.1304049Z         "impl",
2026-06-21T01:51:38.1304133Z         "unit",
2026-06-21T01:51:38.1304233Z         "int"
2026-06-21T01:51:38.1304315Z       ],
2026-06-21T01:51:38.1304401Z       "stages": {
2026-06-21T01:51:38.1304491Z         "doc": {
2026-06-21T01:51:38.1304582Z           "complete": true,
2026-06-21T01:51:38.1304678Z           "evidence": [
2026-06-21T01:51:38.1304759Z             {
2026-06-21T01:51:38.1304930Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-21T01:51:38.1305025Z               "line": 250
2026-06-21T01:51:38.1305102Z             }
2026-06-21T01:51:38.1305186Z           ]
2026-06-21T01:51:38.1305269Z         },
2026-06-21T01:51:38.1305350Z         "impl": {
2026-06-21T01:51:38.1305435Z           "complete": true,
2026-06-21T01:51:38.1305530Z           "evidence": [
2026-06-21T01:51:38.1305617Z             {
2026-06-21T01:51:38.1305731Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.1305826Z               "line": 23
2026-06-21T01:51:38.1305909Z             },
2026-06-21T01:51:38.1305993Z             {
2026-06-21T01:51:38.1306107Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.1306199Z               "line": 844
2026-06-21T01:51:38.1306289Z             },
2026-06-21T01:51:38.1306374Z             {
2026-06-21T01:51:38.1306490Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.1306660Z               "line": 869
2026-06-21T01:51:38.1306750Z             },
2026-06-21T01:51:38.1306831Z             {
2026-06-21T01:51:38.1307027Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.1307122Z               "line": 1105
2026-06-21T01:51:38.1307203Z             },
2026-06-21T01:51:38.1307294Z             {
2026-06-21T01:51:38.1307403Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1307490Z               "line": 32
2026-06-21T01:51:38.1307580Z             },
2026-06-21T01:51:38.1307657Z             {
2026-06-21T01:51:38.1307766Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1307847Z               "line": 1102
2026-06-21T01:51:38.1307933Z             },
2026-06-21T01:51:38.1308018Z             {
2026-06-21T01:51:38.1308129Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1308215Z               "line": 1813
2026-06-21T01:51:38.1308295Z             },
2026-06-21T01:51:38.1308390Z             {
2026-06-21T01:51:38.1308501Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1308604Z               "line": 2100
2026-06-21T01:51:38.1308685Z             },
2026-06-21T01:51:38.1308773Z             {
2026-06-21T01:51:38.1308896Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T01:51:38.1309066Z               "line": 11
2026-06-21T01:51:38.1309176Z             },
2026-06-21T01:51:38.1309260Z             {
2026-06-21T01:51:38.1309378Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1309460Z               "line": 153
2026-06-21T01:51:38.1309542Z             },
2026-06-21T01:51:38.1309626Z             {
2026-06-21T01:51:38.1309732Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1309823Z               "line": 343
2026-06-21T01:51:38.1309908Z             },
2026-06-21T01:51:38.1310008Z             {
2026-06-21T01:51:38.1310109Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:51:38.1310218Z               "line": 13
2026-06-21T01:51:38.1310308Z             },
2026-06-21T01:51:38.1310390Z             {
2026-06-21T01:51:38.1310519Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.1310599Z               "line": 27
2026-06-21T01:51:38.1310686Z             },
2026-06-21T01:51:38.1310772Z             {
2026-06-21T01:51:38.1310899Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.1310986Z               "line": 147
2026-06-21T01:51:38.1311058Z             },
2026-06-21T01:51:38.1311138Z             {
2026-06-21T01:51:38.1311243Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.1311344Z               "line": 632
2026-06-21T01:51:38.1311430Z             },
2026-06-21T01:51:38.1311515Z             {
2026-06-21T01:51:38.1311640Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.1311735Z               "line": 853
2026-06-21T01:51:38.1311819Z             },
2026-06-21T01:51:38.1311900Z             {
2026-06-21T01:51:38.1312019Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.1312108Z               "line": 1000
2026-06-21T01:51:38.1312203Z             },
2026-06-21T01:51:38.1312289Z             {
2026-06-21T01:51:38.1312399Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.1312484Z               "line": 1089
2026-06-21T01:51:38.1312565Z             },
2026-06-21T01:51:38.1312657Z             {
2026-06-21T01:51:38.1312766Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.1312851Z               "line": 1211
2026-06-21T01:51:38.1312943Z             },
2026-06-21T01:51:38.1313023Z             {
2026-06-21T01:51:38.1313147Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T01:51:38.1313238Z               "line": 10
2026-06-21T01:51:38.1313319Z             }
2026-06-21T01:51:38.1313395Z           ]
2026-06-21T01:51:38.1313476Z         },
2026-06-21T01:51:38.1313563Z         "int": {
2026-06-21T01:51:38.1313767Z           "complete": true,
2026-06-21T01:51:38.1313858Z           "evidence": [
2026-06-21T01:51:38.1314053Z             {
2026-06-21T01:51:38.1314178Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T01:51:38.1314274Z               "line": 17
2026-06-21T01:51:38.1314344Z             },
2026-06-21T01:51:38.1314424Z             {
2026-06-21T01:51:38.1314548Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T01:51:38.1314637Z               "line": 90
2026-06-21T01:51:38.1314727Z             },
2026-06-21T01:51:38.1314812Z             {
2026-06-21T01:51:38.1314937Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T01:51:38.1315027Z               "line": 110
2026-06-21T01:51:38.1315107Z             },
2026-06-21T01:51:38.1315185Z             {
2026-06-21T01:51:38.1315314Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T01:51:38.1315399Z               "line": 186
2026-06-21T01:51:38.1315495Z             },
2026-06-21T01:51:38.1315576Z             {
2026-06-21T01:51:38.1315694Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T01:51:38.1315790Z               "line": 309
2026-06-21T01:51:38.1315876Z             },
2026-06-21T01:51:38.1315966Z             {
2026-06-21T01:51:38.1316076Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T01:51:38.1316163Z               "line": 128
2026-06-21T01:51:38.1316248Z             },
2026-06-21T01:51:38.1316334Z             {
2026-06-21T01:51:38.1316459Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T01:51:38.1316548Z               "line": 59
2026-06-21T01:51:38.1316634Z             }
2026-06-21T01:51:38.1316720Z           ]
2026-06-21T01:51:38.1316816Z         },
2026-06-21T01:51:38.1316905Z         "unit": {
2026-06-21T01:51:38.1316997Z           "complete": true,
2026-06-21T01:51:38.1317093Z           "evidence": [
2026-06-21T01:51:38.1317174Z             {
2026-06-21T01:51:38.1317300Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T01:51:38.1317386Z               "line": 62
2026-06-21T01:51:38.1317478Z             },
2026-06-21T01:51:38.1317554Z             {
2026-06-21T01:51:38.1317667Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T01:51:38.1317749Z               "line": 76
2026-06-21T01:51:38.1317831Z             },
2026-06-21T01:51:38.1317916Z             {
2026-06-21T01:51:38.1318021Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T01:51:38.1318117Z               "line": 88
2026-06-21T01:51:38.1318203Z             },
2026-06-21T01:51:38.1318282Z             {
2026-06-21T01:51:38.1318403Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T01:51:38.1318493Z               "line": 347
2026-06-21T01:51:38.1318578Z             },
2026-06-21T01:51:38.1318664Z             {
2026-06-21T01:51:38.1318775Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:51:38.1318865Z               "line": 873
2026-06-21T01:51:38.1319042Z             },
2026-06-21T01:51:38.1319160Z             {
2026-06-21T01:51:38.1319255Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:51:38.1319343Z               "line": 881
2026-06-21T01:51:38.1319433Z             },
2026-06-21T01:51:38.1319517Z             {
2026-06-21T01:51:38.1319621Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:51:38.1319707Z               "line": 898
2026-06-21T01:51:38.1319792Z             },
2026-06-21T01:51:38.1319882Z             {
2026-06-21T01:51:38.1320001Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:51:38.1320083Z               "line": 974
2026-06-21T01:51:38.1320172Z             },
2026-06-21T01:51:38.1320258Z             {
2026-06-21T01:51:38.1320387Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.1320473Z               "line": 1282
2026-06-21T01:51:38.1320549Z             },
2026-06-21T01:51:38.1320636Z             {
2026-06-21T01:51:38.1320760Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.1320955Z               "line": 1294
2026-06-21T01:51:38.1321122Z             },
2026-06-21T01:51:38.1321203Z             {
2026-06-21T01:51:38.1321337Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T01:51:38.1321422Z               "line": 110
2026-06-21T01:51:38.1321507Z             },
2026-06-21T01:51:38.1321590Z             {
2026-06-21T01:51:38.1321698Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T01:51:38.1321784Z               "line": 145
2026-06-21T01:51:38.1321866Z             }
2026-06-21T01:51:38.1321962Z           ]
2026-06-21T01:51:38.1322046Z         }
2026-06-21T01:51:38.1322132Z       }
2026-06-21T01:51:38.1322219Z     },
2026-06-21T01:51:38.1322305Z     {
2026-06-21T01:51:38.1322403Z       "id": "REQ-DAEMON-3",
2026-06-21T01:51:38.1322560Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-21T01:51:38.1322659Z       "requiredStages": [
2026-06-21T01:51:38.1322739Z         "impl",
2026-06-21T01:51:38.1322835Z         "unit",
2026-06-21T01:51:38.1322921Z         "int"
2026-06-21T01:51:38.1323016Z       ],
2026-06-21T01:51:38.1323106Z       "stages": {
2026-06-21T01:51:38.1323188Z         "doc": {
2026-06-21T01:51:38.1323283Z           "complete": false,
2026-06-21T01:51:38.1323373Z           "evidence": []
2026-06-21T01:51:38.1323459Z         },
2026-06-21T01:51:38.1323546Z         "impl": {
2026-06-21T01:51:38.1323632Z           "complete": true,
2026-06-21T01:51:38.1323726Z           "evidence": [
2026-06-21T01:51:38.1323813Z             {
2026-06-21T01:51:38.1323936Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1324026Z               "line": 14
2026-06-21T01:51:38.1324113Z             },
2026-06-21T01:51:38.1324204Z             {
2026-06-21T01:51:38.1324327Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T01:51:38.1324418Z               "line": 11
2026-06-21T01:51:38.1324500Z             },
2026-06-21T01:51:38.1324589Z             {
2026-06-21T01:51:38.1324699Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:51:38.1324801Z               "line": 305
2026-06-21T01:51:38.1324894Z             },
2026-06-21T01:51:38.1324980Z             {
2026-06-21T01:51:38.1325093Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1325174Z               "line": 1956
2026-06-21T01:51:38.1325268Z             },
2026-06-21T01:51:38.1325348Z             {
2026-06-21T01:51:38.1325459Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1325554Z               "line": 4235
2026-06-21T01:51:38.1325635Z             },
2026-06-21T01:51:38.1325726Z             {
2026-06-21T01:51:38.1325831Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1325925Z               "line": 4256
2026-06-21T01:51:38.1326011Z             }
2026-06-21T01:51:38.1326094Z           ]
2026-06-21T01:51:38.1326179Z         },
2026-06-21T01:51:38.1326274Z         "int": {
2026-06-21T01:51:38.1326385Z           "complete": true,
2026-06-21T01:51:38.1326474Z           "evidence": [
2026-06-21T01:51:38.1326574Z             {
2026-06-21T01:51:38.1326704Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T01:51:38.1326803Z               "line": 49
2026-06-21T01:51:38.1326894Z             },
2026-06-21T01:51:38.1326980Z             {
2026-06-21T01:51:38.1327099Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T01:51:38.1327189Z               "line": 487
2026-06-21T01:51:38.1327285Z             }
2026-06-21T01:51:38.1327377Z           ]
2026-06-21T01:51:38.1327475Z         },
2026-06-21T01:51:38.1327562Z         "unit": {
2026-06-21T01:51:38.1327643Z           "complete": true,
2026-06-21T01:51:38.1327743Z           "evidence": [
2026-06-21T01:51:38.1327828Z             {
2026-06-21T01:51:38.1327947Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1328033Z               "line": 1553
2026-06-21T01:51:38.1328128Z             },
2026-06-21T01:51:38.1328305Z             {
2026-06-21T01:51:38.1328410Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1328581Z               "line": 10715
2026-06-21T01:51:38.1328653Z             }
2026-06-21T01:51:38.1328743Z           ]
2026-06-21T01:51:38.1328814Z         }
2026-06-21T01:51:38.1328910Z       }
2026-06-21T01:51:38.1329115Z     },
2026-06-21T01:51:38.1329200Z     {
2026-06-21T01:51:38.1329302Z       "id": "REQ-DAEMON-4",
2026-06-21T01:51:38.1329425Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-21T01:51:38.1329525Z       "requiredStages": [
2026-06-21T01:51:38.1329612Z         "impl",
2026-06-21T01:51:38.1329701Z         "unit",
2026-06-21T01:51:38.1329787Z         "int"
2026-06-21T01:51:38.1329869Z       ],
2026-06-21T01:51:38.1329955Z       "stages": {
2026-06-21T01:51:38.1330040Z         "doc": {
2026-06-21T01:51:38.1330134Z           "complete": false,
2026-06-21T01:51:38.1330220Z           "evidence": []
2026-06-21T01:51:38.1330310Z         },
2026-06-21T01:51:38.1330408Z         "impl": {
2026-06-21T01:51:38.1330494Z           "complete": true,
2026-06-21T01:51:38.1330590Z           "evidence": [
2026-06-21T01:51:38.1330676Z             {
2026-06-21T01:51:38.1330799Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1330885Z               "line": 464
2026-06-21T01:51:38.1330981Z             },
2026-06-21T01:51:38.1331071Z             {
2026-06-21T01:51:38.1331191Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1331286Z               "line": 529
2026-06-21T01:51:38.1331357Z             },
2026-06-21T01:51:38.1331443Z             {
2026-06-21T01:51:38.1331568Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1331658Z               "line": 551
2026-06-21T01:51:38.1331753Z             }
2026-06-21T01:51:38.1331835Z           ]
2026-06-21T01:51:38.1331925Z         },
2026-06-21T01:51:38.1332006Z         "int": {
2026-06-21T01:51:38.1332101Z           "complete": true,
2026-06-21T01:51:38.1332188Z           "evidence": [
2026-06-21T01:51:38.1332277Z             {
2026-06-21T01:51:38.1332412Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T01:51:38.1332503Z               "line": 42
2026-06-21T01:51:38.1332592Z             }
2026-06-21T01:51:38.1332673Z           ]
2026-06-21T01:51:38.1332755Z         },
2026-06-21T01:51:38.1332842Z         "unit": {
2026-06-21T01:51:38.1332930Z           "complete": true,
2026-06-21T01:51:38.1333025Z           "evidence": [
2026-06-21T01:51:38.1333106Z             {
2026-06-21T01:51:38.1333224Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:51:38.1333313Z               "line": 428
2026-06-21T01:51:38.1333400Z             },
2026-06-21T01:51:38.1333481Z             {
2026-06-21T01:51:38.1333604Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1333704Z               "line": 957
2026-06-21T01:51:38.1333782Z             },
2026-06-21T01:51:38.1333868Z             {
2026-06-21T01:51:38.1333986Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1334082Z               "line": 1027
2026-06-21T01:51:38.1334220Z             },
2026-06-21T01:51:38.1334348Z             {
2026-06-21T01:51:38.1334477Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1334568Z               "line": 1057
2026-06-21T01:51:38.1334658Z             },
2026-06-21T01:51:38.1334745Z             {
2026-06-21T01:51:38.1334873Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1334968Z               "line": 1090
2026-06-21T01:51:38.1335046Z             }
2026-06-21T01:51:38.1335140Z           ]
2026-06-21T01:51:38.1335221Z         }
2026-06-21T01:51:38.1335308Z       }
2026-06-21T01:51:38.1335394Z     },
2026-06-21T01:51:38.1335473Z     {
2026-06-21T01:51:38.1335573Z       "id": "REQ-DAEMON-5",
2026-06-21T01:51:38.1337082Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-21T01:51:38.1337412Z       "requiredStages": [
2026-06-21T01:51:38.1337502Z         "impl",
2026-06-21T01:51:38.1337593Z         "unit"
2026-06-21T01:51:38.1337683Z       ],
2026-06-21T01:51:38.1337769Z       "stages": {
2026-06-21T01:51:38.1337855Z         "doc": {
2026-06-21T01:51:38.1337956Z           "complete": false,
2026-06-21T01:51:38.1338049Z           "evidence": []
2026-06-21T01:51:38.1338141Z         },
2026-06-21T01:51:38.1338233Z         "impl": {
2026-06-21T01:51:38.1338331Z           "complete": true,
2026-06-21T01:51:38.1338421Z           "evidence": [
2026-06-21T01:51:38.1338497Z             {
2026-06-21T01:51:38.1338632Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.1338740Z               "line": 476
2026-06-21T01:51:38.1338826Z             },
2026-06-21T01:51:38.1338917Z             {
2026-06-21T01:51:38.1339155Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.1339242Z               "line": 769
2026-06-21T01:51:38.1339337Z             },
2026-06-21T01:51:38.1339417Z             {
2026-06-21T01:51:38.1339542Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.1339627Z               "line": 782
2026-06-21T01:51:38.1339713Z             },
2026-06-21T01:51:38.1339799Z             {
2026-06-21T01:51:38.1339918Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.1340009Z               "line": 800
2026-06-21T01:51:38.1340085Z             },
2026-06-21T01:51:38.1340177Z             {
2026-06-21T01:51:38.1340285Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.1340381Z               "line": 841
2026-06-21T01:51:38.1340482Z             }
2026-06-21T01:51:38.1340558Z           ]
2026-06-21T01:51:38.1340651Z         },
2026-06-21T01:51:38.1340737Z         "int": {
2026-06-21T01:51:38.1340842Z           "complete": false,
2026-06-21T01:51:38.1340931Z           "evidence": []
2026-06-21T01:51:38.1341016Z         },
2026-06-21T01:51:38.1341102Z         "unit": {
2026-06-21T01:51:38.1341193Z           "complete": true,
2026-06-21T01:51:38.1341284Z           "evidence": [
2026-06-21T01:51:38.1341364Z             {
2026-06-21T01:51:38.1341489Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.1341574Z               "line": 1189
2026-06-21T01:51:38.1341674Z             },
2026-06-21T01:51:38.1341765Z             {
2026-06-21T01:51:38.1341875Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.1341969Z               "line": 1213
2026-06-21T01:51:38.1342057Z             },
2026-06-21T01:51:38.1342147Z             {
2026-06-21T01:51:38.1342261Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.1342361Z               "line": 1239
2026-06-21T01:51:38.1342447Z             }
2026-06-21T01:51:38.1342542Z           ]
2026-06-21T01:51:38.1342632Z         }
2026-06-21T01:51:38.1342720Z       }
2026-06-21T01:51:38.1342804Z     },
2026-06-21T01:51:38.1342891Z     {
2026-06-21T01:51:38.1342991Z       "id": "REQ-DAEMON-6",
2026-06-21T01:51:38.1345014Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-21T01:51:38.1345258Z       "requiredStages": [
2026-06-21T01:51:38.1345353Z         "impl",
2026-06-21T01:51:38.1345538Z         "unit"
2026-06-21T01:51:38.1345615Z       ],
2026-06-21T01:51:38.1345700Z       "stages": {
2026-06-21T01:51:38.1345777Z         "doc": {
2026-06-21T01:51:38.1345878Z           "complete": false,
2026-06-21T01:51:38.1345973Z           "evidence": []
2026-06-21T01:51:38.1346066Z         },
2026-06-21T01:51:38.1346152Z         "impl": {
2026-06-21T01:51:38.1346242Z           "complete": true,
2026-06-21T01:51:38.1346332Z           "evidence": [
2026-06-21T01:51:38.1346417Z             {
2026-06-21T01:51:38.1346545Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1346642Z               "line": 495
2026-06-21T01:51:38.1346731Z             },
2026-06-21T01:51:38.1346817Z             {
2026-06-21T01:51:38.1346942Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1347036Z               "line": 526
2026-06-21T01:51:38.1347131Z             },
2026-06-21T01:51:38.1347228Z             {
2026-06-21T01:51:38.1347347Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:51:38.1347451Z               "line": 55
2026-06-21T01:51:38.1347548Z             },
2026-06-21T01:51:38.1347632Z             {
2026-06-21T01:51:38.1347757Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:51:38.1347844Z               "line": 70
2026-06-21T01:51:38.1347937Z             },
2026-06-21T01:51:38.1348028Z             {
2026-06-21T01:51:38.1348125Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1348211Z               "line": 2020
2026-06-21T01:51:38.1348305Z             },
2026-06-21T01:51:38.1348391Z             {
2026-06-21T01:51:38.1348492Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1348590Z               "line": 2046
2026-06-21T01:51:38.1348682Z             }
2026-06-21T01:51:38.1348769Z           ]
2026-06-21T01:51:38.1348854Z         },
2026-06-21T01:51:38.1349343Z         "int": {
2026-06-21T01:51:38.1349444Z           "complete": false,
2026-06-21T01:51:38.1349535Z           "evidence": []
2026-06-21T01:51:38.1349634Z         },
2026-06-21T01:51:38.1349725Z         "unit": {
2026-06-21T01:51:38.1349811Z           "complete": true,
2026-06-21T01:51:38.1349906Z           "evidence": [
2026-06-21T01:51:38.1350030Z             {
2026-06-21T01:51:38.1350154Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:51:38.1350230Z               "line": 288
2026-06-21T01:51:38.1350320Z             },
2026-06-21T01:51:38.1350408Z             {
2026-06-21T01:51:38.1350526Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:51:38.1350621Z               "line": 299
2026-06-21T01:51:38.1350704Z             },
2026-06-21T01:51:38.1350784Z             {
2026-06-21T01:51:38.1350902Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:51:38.1350994Z               "line": 325
2026-06-21T01:51:38.1351085Z             },
2026-06-21T01:51:38.1351164Z             {
2026-06-21T01:51:38.1351287Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:51:38.1351379Z               "line": 351
2026-06-21T01:51:38.1351472Z             }
2026-06-21T01:51:38.1351557Z           ]
2026-06-21T01:51:38.1351653Z         }
2026-06-21T01:51:38.1351735Z       }
2026-06-21T01:51:38.1351810Z     },
2026-06-21T01:51:38.1351890Z     {
2026-06-21T01:51:38.1351977Z       "id": "REQ-DAEMON-7",
2026-06-21T01:51:38.1353384Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-21T01:51:38.1353484Z       "requiredStages": [
2026-06-21T01:51:38.1353717Z         "impl",
2026-06-21T01:51:38.1353803Z         "unit"
2026-06-21T01:51:38.1353971Z       ],
2026-06-21T01:51:38.1354056Z       "stages": {
2026-06-21T01:51:38.1354140Z         "doc": {
2026-06-21T01:51:38.1354246Z           "complete": false,
2026-06-21T01:51:38.1354344Z           "evidence": []
2026-06-21T01:51:38.1354424Z         },
2026-06-21T01:51:38.1354515Z         "impl": {
2026-06-21T01:51:38.1354607Z           "complete": true,
2026-06-21T01:51:38.1354701Z           "evidence": [
2026-06-21T01:51:38.1354781Z             {
2026-06-21T01:51:38.1354902Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1354997Z               "line": 545
2026-06-21T01:51:38.1355077Z             },
2026-06-21T01:51:38.1355159Z             {
2026-06-21T01:51:38.1355288Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:51:38.1355378Z               "line": 610
2026-06-21T01:51:38.1355459Z             },
2026-06-21T01:51:38.1355550Z             {
2026-06-21T01:51:38.1355674Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:51:38.1355769Z               "line": 89
2026-06-21T01:51:38.1355856Z             },
2026-06-21T01:51:38.1355941Z             {
2026-06-21T01:51:38.1362638Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1362756Z               "line": 1957
2026-06-21T01:51:38.1362852Z             }
2026-06-21T01:51:38.1362943Z           ]
2026-06-21T01:51:38.1363018Z         },
2026-06-21T01:51:38.1363113Z         "int": {
2026-06-21T01:51:38.1363206Z           "complete": false,
2026-06-21T01:51:38.1363305Z           "evidence": []
2026-06-21T01:51:38.1363390Z         },
2026-06-21T01:51:38.1363481Z         "unit": {
2026-06-21T01:51:38.1363577Z           "complete": true,
2026-06-21T01:51:38.1363653Z           "evidence": [
2026-06-21T01:51:38.1363739Z             {
2026-06-21T01:51:38.1363873Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:51:38.1363962Z               "line": 314
2026-06-21T01:51:38.1364072Z             },
2026-06-21T01:51:38.1364160Z             {
2026-06-21T01:51:38.1364287Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1364378Z               "line": 8102
2026-06-21T01:51:38.1364460Z             }
2026-06-21T01:51:38.1364531Z           ]
2026-06-21T01:51:38.1364616Z         }
2026-06-21T01:51:38.1364700Z       }
2026-06-21T01:51:38.1364792Z     },
2026-06-21T01:51:38.1364876Z     {
2026-06-21T01:51:38.1364966Z       "id": "REQ-DAEMON-8",
2026-06-21T01:51:38.1366000Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-21T01:51:38.1366096Z       "requiredStages": [
2026-06-21T01:51:38.1366191Z         "impl",
2026-06-21T01:51:38.1366277Z         "unit"
2026-06-21T01:51:38.1366368Z       ],
2026-06-21T01:51:38.1366459Z       "stages": {
2026-06-21T01:51:38.1366543Z         "doc": {
2026-06-21T01:51:38.1366649Z           "complete": false,
2026-06-21T01:51:38.1366740Z           "evidence": []
2026-06-21T01:51:38.1366830Z         },
2026-06-21T01:51:38.1366921Z         "impl": {
2026-06-21T01:51:38.1367012Z           "complete": true,
2026-06-21T01:51:38.1367107Z           "evidence": [
2026-06-21T01:51:38.1367187Z             {
2026-06-21T01:51:38.1367320Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1367410Z               "line": 445
2026-06-21T01:51:38.1367499Z             },
2026-06-21T01:51:38.1367579Z             {
2026-06-21T01:51:38.1367709Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:51:38.1367795Z               "line": 56
2026-06-21T01:51:38.1367880Z             }
2026-06-21T01:51:38.1367971Z           ]
2026-06-21T01:51:38.1368039Z         },
2026-06-21T01:51:38.1368124Z         "int": {
2026-06-21T01:51:38.1368377Z           "complete": false,
2026-06-21T01:51:38.1368467Z           "evidence": []
2026-06-21T01:51:38.1368634Z         },
2026-06-21T01:51:38.1368725Z         "unit": {
2026-06-21T01:51:38.1368820Z           "complete": true,
2026-06-21T01:51:38.1368896Z           "evidence": [
2026-06-21T01:51:38.1369082Z             {
2026-06-21T01:51:38.1369220Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:51:38.1369307Z               "line": 288
2026-06-21T01:51:38.1369392Z             },
2026-06-21T01:51:38.1369468Z             {
2026-06-21T01:51:38.1369598Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:51:38.1369688Z               "line": 325
2026-06-21T01:51:38.1369774Z             }
2026-06-21T01:51:38.1369855Z           ]
2026-06-21T01:51:38.1369941Z         }
2026-06-21T01:51:38.1370031Z       }
2026-06-21T01:51:38.1370111Z     },
2026-06-21T01:51:38.1370192Z     {
2026-06-21T01:51:38.1370274Z       "id": "REQ-DAEMON-9",
2026-06-21T01:51:38.1372639Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-21T01:51:38.1372754Z       "requiredStages": [
2026-06-21T01:51:38.1372835Z         "impl",
2026-06-21T01:51:38.1372921Z         "unit"
2026-06-21T01:51:38.1373006Z       ],
2026-06-21T01:51:38.1373092Z       "stages": {
2026-06-21T01:51:38.1373174Z         "doc": {
2026-06-21T01:51:38.1373278Z           "complete": false,
2026-06-21T01:51:38.1373378Z           "evidence": []
2026-06-21T01:51:38.1373470Z         },
2026-06-21T01:51:38.1373551Z         "impl": {
2026-06-21T01:51:38.1373645Z           "complete": true,
2026-06-21T01:51:38.1373732Z           "evidence": [
2026-06-21T01:51:38.1373817Z             {
2026-06-21T01:51:38.1373955Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1374037Z               "line": 276
2026-06-21T01:51:38.1374132Z             },
2026-06-21T01:51:38.1374209Z             {
2026-06-21T01:51:38.1374337Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1374429Z               "line": 1153
2026-06-21T01:51:38.1374513Z             },
2026-06-21T01:51:38.1374604Z             {
2026-06-21T01:51:38.1374720Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1374804Z               "line": 197
2026-06-21T01:51:38.1374900Z             },
2026-06-21T01:51:38.1374987Z             {
2026-06-21T01:51:38.1375100Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1375194Z               "line": 344
2026-06-21T01:51:38.1375279Z             },
2026-06-21T01:51:38.1375361Z             {
2026-06-21T01:51:38.1375478Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1375559Z               "line": 381
2026-06-21T01:51:38.1375649Z             },
2026-06-21T01:51:38.1375731Z             {
2026-06-21T01:51:38.1375840Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1375926Z               "line": 2075
2026-06-21T01:51:38.1376008Z             }
2026-06-21T01:51:38.1376098Z           ]
2026-06-21T01:51:38.1376183Z         },
2026-06-21T01:51:38.1376270Z         "int": {
2026-06-21T01:51:38.1376361Z           "complete": false,
2026-06-21T01:51:38.1376456Z           "evidence": []
2026-06-21T01:51:38.1376541Z         },
2026-06-21T01:51:38.1376742Z         "unit": {
2026-06-21T01:51:38.1376842Z           "complete": true,
2026-06-21T01:51:38.1376933Z           "evidence": [
2026-06-21T01:51:38.1377108Z             {
2026-06-21T01:51:38.1377224Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1377319Z               "line": 1158
2026-06-21T01:51:38.1377399Z             },
2026-06-21T01:51:38.1377481Z             {
2026-06-21T01:51:38.1377582Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1377667Z               "line": 10580
2026-06-21T01:51:38.1377752Z             }
2026-06-21T01:51:38.1377832Z           ]
2026-06-21T01:51:38.1377919Z         }
2026-06-21T01:51:38.1378003Z       }
2026-06-21T01:51:38.1378088Z     },
2026-06-21T01:51:38.1378173Z     {
2026-06-21T01:51:38.1378255Z       "id": "REQ-DOCS-1",
2026-06-21T01:51:38.1378449Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-21T01:51:38.1378546Z       "requiredStages": [
2026-06-21T01:51:38.1378637Z         "doc",
2026-06-21T01:51:38.1378726Z         "impl"
2026-06-21T01:51:38.1378803Z       ],
2026-06-21T01:51:38.1378899Z       "stages": {
2026-06-21T01:51:38.1379065Z         "doc": {
2026-06-21T01:51:38.1379171Z           "complete": true,
2026-06-21T01:51:38.1379256Z           "evidence": [
2026-06-21T01:51:38.1379347Z             {
2026-06-21T01:51:38.1379451Z               "path": "docs-site/src/index.md",
2026-06-21T01:51:38.1379538Z               "line": 50
2026-06-21T01:51:38.1379623Z             }
2026-06-21T01:51:38.1379709Z           ]
2026-06-21T01:51:38.1379795Z         },
2026-06-21T01:51:38.1379881Z         "impl": {
2026-06-21T01:51:38.1379975Z           "complete": true,
2026-06-21T01:51:38.1380061Z           "evidence": [
2026-06-21T01:51:38.1380139Z             {
2026-06-21T01:51:38.1380262Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T01:51:38.1380348Z               "line": 12
2026-06-21T01:51:38.1380435Z             },
2026-06-21T01:51:38.1380511Z             {
2026-06-21T01:51:38.1380638Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:51:38.1380733Z               "line": 14
2026-06-21T01:51:38.1380814Z             }
2026-06-21T01:51:38.1380901Z           ]
2026-06-21T01:51:38.1380985Z         },
2026-06-21T01:51:38.1381076Z         "int": {
2026-06-21T01:51:38.1381158Z           "complete": false,
2026-06-21T01:51:38.1381253Z           "evidence": []
2026-06-21T01:51:38.1381333Z         },
2026-06-21T01:51:38.1381425Z         "unit": {
2026-06-21T01:51:38.1381525Z           "complete": false,
2026-06-21T01:51:38.1381610Z           "evidence": []
2026-06-21T01:51:38.1381687Z         }
2026-06-21T01:51:38.1381773Z       }
2026-06-21T01:51:38.1381863Z     },
2026-06-21T01:51:38.1381948Z     {
2026-06-21T01:51:38.1382040Z       "id": "REQ-DOCS-2",
2026-06-21T01:51:38.1382211Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-21T01:51:38.1382301Z       "requiredStages": [
2026-06-21T01:51:38.1382388Z         "doc",
2026-06-21T01:51:38.1382469Z         "int"
2026-06-21T01:51:38.1382559Z       ],
2026-06-21T01:51:38.1382655Z       "stages": {
2026-06-21T01:51:38.1382751Z         "doc": {
2026-06-21T01:51:38.1382840Z           "complete": true,
2026-06-21T01:51:38.1382930Z           "evidence": [
2026-06-21T01:51:38.1383021Z             {
2026-06-21T01:51:38.1383195Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-21T01:51:38.1383285Z               "line": 3
2026-06-21T01:51:38.1383376Z             },
2026-06-21T01:51:38.1383463Z             {
2026-06-21T01:51:38.1383595Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-21T01:51:38.1383681Z               "line": 3
2026-06-21T01:51:38.1383767Z             },
2026-06-21T01:51:38.1383852Z             {
2026-06-21T01:51:38.1383982Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T01:51:38.1384077Z               "line": 3
2026-06-21T01:51:38.1384153Z             }
2026-06-21T01:51:38.1384239Z           ]
2026-06-21T01:51:38.1384655Z         },
2026-06-21T01:51:38.1384744Z         "impl": {
2026-06-21T01:51:38.1384830Z           "complete": false,
2026-06-21T01:51:38.1385031Z           "evidence": []
2026-06-21T01:51:38.1385121Z         },
2026-06-21T01:51:38.1385193Z         "int": {
2026-06-21T01:51:38.1385299Z           "complete": true,
2026-06-21T01:51:38.1385383Z           "evidence": [
2026-06-21T01:51:38.1385460Z             {
2026-06-21T01:51:38.1385580Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T01:51:38.1385675Z               "line": 14
2026-06-21T01:51:38.1385759Z             }
2026-06-21T01:51:38.1385844Z           ]
2026-06-21T01:51:38.1385916Z         },
2026-06-21T01:51:38.1386001Z         "unit": {
2026-06-21T01:51:38.1386091Z           "complete": false,
2026-06-21T01:51:38.1386176Z           "evidence": []
2026-06-21T01:51:38.1386268Z         }
2026-06-21T01:51:38.1386344Z       }
2026-06-21T01:51:38.1386424Z     },
2026-06-21T01:51:38.1386515Z     {
2026-06-21T01:51:38.1386616Z       "id": "REQ-DOCS-3",
2026-06-21T01:51:38.1386893Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-21T01:51:38.1387002Z       "requiredStages": [
2026-06-21T01:51:38.1387096Z         "doc"
2026-06-21T01:51:38.1387183Z       ],
2026-06-21T01:51:38.1387268Z       "stages": {
2026-06-21T01:51:38.1387349Z         "doc": {
2026-06-21T01:51:38.1387435Z           "complete": true,
2026-06-21T01:51:38.1387532Z           "evidence": [
2026-06-21T01:51:38.1387621Z             {
2026-06-21T01:51:38.1387736Z               "path": "docs-site/src/index.md",
2026-06-21T01:51:38.1387827Z               "line": 42
2026-06-21T01:51:38.1387903Z             }
2026-06-21T01:51:38.1387997Z           ]
2026-06-21T01:51:38.1388079Z         },
2026-06-21T01:51:38.1388176Z         "impl": {
2026-06-21T01:51:38.1388274Z           "complete": false,
2026-06-21T01:51:38.1388359Z           "evidence": []
2026-06-21T01:51:38.1388445Z         },
2026-06-21T01:51:38.1388530Z         "int": {
2026-06-21T01:51:38.1388638Z           "complete": false,
2026-06-21T01:51:38.1388728Z           "evidence": []
2026-06-21T01:51:38.1388824Z         },
2026-06-21T01:51:38.1388901Z         "unit": {
2026-06-21T01:51:38.1389116Z           "complete": false,
2026-06-21T01:51:38.1389211Z           "evidence": []
2026-06-21T01:51:38.1389296Z         }
2026-06-21T01:51:38.1389372Z       }
2026-06-21T01:51:38.1389450Z     },
2026-06-21T01:51:38.1389540Z     {
2026-06-21T01:51:38.1389620Z       "id": "REQ-DOCS-4",
2026-06-21T01:51:38.1389821Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-21T01:51:38.1389921Z       "requiredStages": [
2026-06-21T01:51:38.1390002Z         "doc",
2026-06-21T01:51:38.1390089Z         "impl",
2026-06-21T01:51:38.1390178Z         "unit"
2026-06-21T01:51:38.1390264Z       ],
2026-06-21T01:51:38.1390360Z       "stages": {
2026-06-21T01:51:38.1390446Z         "doc": {
2026-06-21T01:51:38.1390540Z           "complete": true,
2026-06-21T01:51:38.1390636Z           "evidence": [
2026-06-21T01:51:38.1390719Z             {
2026-06-21T01:51:38.1390822Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-21T01:51:38.1390927Z               "line": 35
2026-06-21T01:51:38.1391014Z             }
2026-06-21T01:51:38.1391099Z           ]
2026-06-21T01:51:38.1391189Z         },
2026-06-21T01:51:38.1391269Z         "impl": {
2026-06-21T01:51:38.1391365Z           "complete": true,
2026-06-21T01:51:38.1391452Z           "evidence": [
2026-06-21T01:51:38.1391536Z             {
2026-06-21T01:51:38.1391661Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.1391747Z               "line": 746
2026-06-21T01:51:38.1391832Z             },
2026-06-21T01:51:38.1391917Z             {
2026-06-21T01:51:38.1392019Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:51:38.1392099Z               "line": 15
2026-06-21T01:51:38.1392189Z             }
2026-06-21T01:51:38.1392261Z           ]
2026-06-21T01:51:38.1392348Z         },
2026-06-21T01:51:38.1392552Z         "int": {
2026-06-21T01:51:38.1392639Z           "complete": false,
2026-06-21T01:51:38.1392828Z           "evidence": []
2026-06-21T01:51:38.1392910Z         },
2026-06-21T01:51:38.1393001Z         "unit": {
2026-06-21T01:51:38.1393090Z           "complete": true,
2026-06-21T01:51:38.1393186Z           "evidence": [
2026-06-21T01:51:38.1393264Z             {
2026-06-21T01:51:38.1393386Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.1393476Z               "line": 1682
2026-06-21T01:51:38.1393547Z             }
2026-06-21T01:51:38.1393638Z           ]
2026-06-21T01:51:38.1393727Z         }
2026-06-21T01:51:38.1393812Z       }
2026-06-21T01:51:38.1393903Z     },
2026-06-21T01:51:38.1393979Z     {
2026-06-21T01:51:38.1394070Z       "id": "REQ-DOCS-5",
2026-06-21T01:51:38.1394276Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-21T01:51:38.1394375Z       "requiredStages": [
2026-06-21T01:51:38.1394460Z         "impl",
2026-06-21T01:51:38.1394557Z         "int"
2026-06-21T01:51:38.1394642Z       ],
2026-06-21T01:51:38.1394727Z       "stages": {
2026-06-21T01:51:38.1394823Z         "doc": {
2026-06-21T01:51:38.1394910Z           "complete": false,
2026-06-21T01:51:38.1395005Z           "evidence": []
2026-06-21T01:51:38.1395089Z         },
2026-06-21T01:51:38.1395172Z         "impl": {
2026-06-21T01:51:38.1395267Z           "complete": true,
2026-06-21T01:51:38.1395357Z           "evidence": [
2026-06-21T01:51:38.1395448Z             {
2026-06-21T01:51:38.1395563Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.1395657Z               "line": 747
2026-06-21T01:51:38.1395738Z             },
2026-06-21T01:51:38.1395830Z             {
2026-06-21T01:51:38.1395939Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:51:38.1396024Z               "line": 113
2026-06-21T01:51:38.1396116Z             }
2026-06-21T01:51:38.1396203Z           ]
2026-06-21T01:51:38.1396286Z         },
2026-06-21T01:51:38.1396381Z         "int": {
2026-06-21T01:51:38.1396481Z           "complete": true,
2026-06-21T01:51:38.1396571Z           "evidence": [
2026-06-21T01:51:38.1396655Z             {
2026-06-21T01:51:38.1396765Z               "path": ".github/workflows/ci.yml",
2026-06-21T01:51:38.1396856Z               "line": 143
2026-06-21T01:51:38.1396951Z             },
2026-06-21T01:51:38.1397032Z             {
2026-06-21T01:51:38.1397161Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.1397256Z               "line": 1719
2026-06-21T01:51:38.1397347Z             }
2026-06-21T01:51:38.1397448Z           ]
2026-06-21T01:51:38.1397533Z         },
2026-06-21T01:51:38.1397623Z         "unit": {
2026-06-21T01:51:38.1397714Z           "complete": false,
2026-06-21T01:51:38.1397815Z           "evidence": []
2026-06-21T01:51:38.1397905Z         }
2026-06-21T01:51:38.1397986Z       }
2026-06-21T01:51:38.1398078Z     },
2026-06-21T01:51:38.1398157Z     {
2026-06-21T01:51:38.1398262Z       "id": "REQ-DOCS-6",
2026-06-21T01:51:38.1398591Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-21T01:51:38.1398702Z       "requiredStages": [
2026-06-21T01:51:38.1398801Z         "impl",
2026-06-21T01:51:38.1398891Z         "unit",
2026-06-21T01:51:38.1399095Z         "int"
2026-06-21T01:51:38.1399189Z       ],
2026-06-21T01:51:38.1399283Z       "stages": {
2026-06-21T01:51:38.1399370Z         "doc": {
2026-06-21T01:51:38.1399457Z           "complete": true,
2026-06-21T01:51:38.1399546Z           "evidence": [
2026-06-21T01:51:38.1399632Z             {
2026-06-21T01:51:38.1399757Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T01:51:38.1399842Z               "line": 4
2026-06-21T01:51:38.1399923Z             }
2026-06-21T01:51:38.1399996Z           ]
2026-06-21T01:51:38.1400090Z         },
2026-06-21T01:51:38.1400180Z         "impl": {
2026-06-21T01:51:38.1400272Z           "complete": true,
2026-06-21T01:51:38.1400509Z           "evidence": [
2026-06-21T01:51:38.1400586Z             {
2026-06-21T01:51:38.1400796Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1400881Z               "line": 5240
2026-06-21T01:51:38.1400973Z             }
2026-06-21T01:51:38.1401063Z           ]
2026-06-21T01:51:38.1401139Z         },
2026-06-21T01:51:38.1401221Z         "int": {
2026-06-21T01:51:38.1401298Z           "complete": true,
2026-06-21T01:51:38.1401386Z           "evidence": [
2026-06-21T01:51:38.1401478Z             {
2026-06-21T01:51:38.1401608Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T01:51:38.1401706Z               "line": 39
2026-06-21T01:51:38.1401791Z             }
2026-06-21T01:51:38.1401886Z           ]
2026-06-21T01:51:38.1401969Z         },
2026-06-21T01:51:38.1402058Z         "unit": {
2026-06-21T01:51:38.1402139Z           "complete": true,
2026-06-21T01:51:38.1402235Z           "evidence": [
2026-06-21T01:51:38.1402326Z             {
2026-06-21T01:51:38.1402435Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1402526Z               "line": 10742
2026-06-21T01:51:38.1402621Z             }
2026-06-21T01:51:38.1402712Z           ]
2026-06-21T01:51:38.1402792Z         }
2026-06-21T01:51:38.1402879Z       }
2026-06-21T01:51:38.1402960Z     },
2026-06-21T01:51:38.1403041Z     {
2026-06-21T01:51:38.1403131Z       "id": "REQ-ELEVATE-1",
2026-06-21T01:51:38.1406372Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-21T01:51:38.1406518Z       "requiredStages": [
2026-06-21T01:51:38.1406608Z         "doc",
2026-06-21T01:51:38.1406705Z         "impl",
2026-06-21T01:51:38.1406800Z         "unit"
2026-06-21T01:51:38.1406889Z       ],
2026-06-21T01:51:38.1406979Z       "stages": {
2026-06-21T01:51:38.1407080Z         "doc": {
2026-06-21T01:51:38.1407173Z           "complete": true,
2026-06-21T01:51:38.1407268Z           "evidence": [
2026-06-21T01:51:38.1407354Z             {
2026-06-21T01:51:38.1407465Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.1407578Z               "line": 687
2026-06-21T01:51:38.1407650Z             }
2026-06-21T01:51:38.1407750Z           ]
2026-06-21T01:51:38.1407840Z         },
2026-06-21T01:51:38.1407935Z         "impl": {
2026-06-21T01:51:38.1408032Z           "complete": true,
2026-06-21T01:51:38.1408136Z           "evidence": [
2026-06-21T01:51:38.1408226Z             {
2026-06-21T01:51:38.1408327Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1408426Z               "line": 3572
2026-06-21T01:51:38.1408517Z             },
2026-06-21T01:51:38.1408609Z             {
2026-06-21T01:51:38.1408713Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1408808Z               "line": 3617
2026-06-21T01:51:38.1408904Z             },
2026-06-21T01:51:38.1409098Z             {
2026-06-21T01:51:38.1409219Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1409310Z               "line": 3679
2026-06-21T01:51:38.1409399Z             },
2026-06-21T01:51:38.1409480Z             {
2026-06-21T01:51:38.1409734Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.1409829Z               "line": 92
2026-06-21T01:51:38.1410040Z             },
2026-06-21T01:51:38.1410130Z             {
2026-06-21T01:51:38.1410231Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.1410321Z               "line": 148
2026-06-21T01:51:38.1410406Z             }
2026-06-21T01:51:38.1410497Z           ]
2026-06-21T01:51:38.1410589Z         },
2026-06-21T01:51:38.1410670Z         "int": {
2026-06-21T01:51:38.1410774Z           "complete": false,
2026-06-21T01:51:38.1410861Z           "evidence": []
2026-06-21T01:51:38.1410941Z         },
2026-06-21T01:51:38.1411032Z         "unit": {
2026-06-21T01:51:38.1411127Z           "complete": true,
2026-06-21T01:51:38.1411214Z           "evidence": [
2026-06-21T01:51:38.1411298Z             {
2026-06-21T01:51:38.1411408Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.1411500Z               "line": 442
2026-06-21T01:51:38.1411599Z             },
2026-06-21T01:51:38.1411685Z             {
2026-06-21T01:51:38.1411800Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.1411895Z               "line": 460
2026-06-21T01:51:38.1411980Z             }
2026-06-21T01:51:38.1412071Z           ]
2026-06-21T01:51:38.1412154Z         }
2026-06-21T01:51:38.1412243Z       }
2026-06-21T01:51:38.1412318Z     },
2026-06-21T01:51:38.1412403Z     {
2026-06-21T01:51:38.1412514Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-21T01:51:38.1414306Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-21T01:51:38.1414427Z       "requiredStages": [
2026-06-21T01:51:38.1414516Z         "doc",
2026-06-21T01:51:38.1414601Z         "impl",
2026-06-21T01:51:38.1414687Z         "unit"
2026-06-21T01:51:38.1414777Z       ],
2026-06-21T01:51:38.1414871Z       "stages": {
2026-06-21T01:51:38.1414956Z         "doc": {
2026-06-21T01:51:38.1415056Z           "complete": true,
2026-06-21T01:51:38.1415143Z           "evidence": [
2026-06-21T01:51:38.1415218Z             {
2026-06-21T01:51:38.1415318Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.1415405Z               "line": 711
2026-06-21T01:51:38.1415495Z             }
2026-06-21T01:51:38.1415580Z           ]
2026-06-21T01:51:38.1415672Z         },
2026-06-21T01:51:38.1415763Z         "impl": {
2026-06-21T01:51:38.1415857Z           "complete": true,
2026-06-21T01:51:38.1415953Z           "evidence": [
2026-06-21T01:51:38.1416039Z             {
2026-06-21T01:51:38.1416158Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1416263Z               "line": 1721
2026-06-21T01:51:38.1416349Z             },
2026-06-21T01:51:38.1416444Z             {
2026-06-21T01:51:38.1416544Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1416645Z               "line": 3125
2026-06-21T01:51:38.1416721Z             },
2026-06-21T01:51:38.1416812Z             {
2026-06-21T01:51:38.1416912Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1417008Z               "line": 3134
2026-06-21T01:51:38.1417097Z             }
2026-06-21T01:51:38.1417183Z           ]
2026-06-21T01:51:38.1417270Z         },
2026-06-21T01:51:38.1417355Z         "int": {
2026-06-21T01:51:38.1417454Z           "complete": false,
2026-06-21T01:51:38.1417544Z           "evidence": []
2026-06-21T01:51:38.1417635Z         },
2026-06-21T01:51:38.1417728Z         "unit": {
2026-06-21T01:51:38.1417914Z           "complete": true,
2026-06-21T01:51:38.1418015Z           "evidence": [
2026-06-21T01:51:38.1418099Z             {
2026-06-21T01:51:38.1418282Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1418368Z               "line": 7950
2026-06-21T01:51:38.1418462Z             },
2026-06-21T01:51:38.1418539Z             {
2026-06-21T01:51:38.1418648Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1418743Z               "line": 7991
2026-06-21T01:51:38.1418820Z             }
2026-06-21T01:51:38.1418911Z           ]
2026-06-21T01:51:38.1419702Z         }
2026-06-21T01:51:38.1419804Z       }
2026-06-21T01:51:38.1419917Z     },
2026-06-21T01:51:38.1420001Z     {
2026-06-21T01:51:38.1420126Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-21T01:51:38.1425034Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-21T01:51:38.1425185Z       "requiredStages": [
2026-06-21T01:51:38.1425266Z         "doc",
2026-06-21T01:51:38.1425351Z         "impl",
2026-06-21T01:51:38.1425440Z         "unit",
2026-06-21T01:51:38.1425525Z         "int"
2026-06-21T01:51:38.1425607Z       ],
2026-06-21T01:51:38.1425694Z       "stages": {
2026-06-21T01:51:38.1425783Z         "doc": {
2026-06-21T01:51:38.1425878Z           "complete": true,
2026-06-21T01:51:38.1425961Z           "evidence": [
2026-06-21T01:51:38.1426050Z             {
2026-06-21T01:51:38.1426136Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.1426228Z               "line": 163
2026-06-21T01:51:38.1426308Z             }
2026-06-21T01:51:38.1426403Z           ]
2026-06-21T01:51:38.1426489Z         },
2026-06-21T01:51:38.1426566Z         "impl": {
2026-06-21T01:51:38.1426670Z           "complete": true,
2026-06-21T01:51:38.1426761Z           "evidence": [
2026-06-21T01:51:38.1426847Z             {
2026-06-21T01:51:38.1426976Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T01:51:38.1427076Z               "line": 105
2026-06-21T01:51:38.1427167Z             },
2026-06-21T01:51:38.1427248Z             {
2026-06-21T01:51:38.1427362Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1427448Z               "line": 7219
2026-06-21T01:51:38.1427539Z             }
2026-06-21T01:51:38.1427619Z           ]
2026-06-21T01:51:38.1427710Z         },
2026-06-21T01:51:38.1427801Z         "int": {
2026-06-21T01:51:38.1427897Z           "complete": true,
2026-06-21T01:51:38.1427991Z           "evidence": [
2026-06-21T01:51:38.1428066Z             {
2026-06-21T01:51:38.1428162Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1428378Z               "line": 7384
2026-06-21T01:51:38.1428460Z             }
2026-06-21T01:51:38.1428551Z           ]
2026-06-21T01:51:38.1428722Z         },
2026-06-21T01:51:38.1428809Z         "unit": {
2026-06-21T01:51:38.1428894Z           "complete": true,
2026-06-21T01:51:38.1429065Z           "evidence": [
2026-06-21T01:51:38.1429147Z             {
2026-06-21T01:51:38.1429257Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1429336Z               "line": 7355
2026-06-21T01:51:38.1429424Z             }
2026-06-21T01:51:38.1429509Z           ]
2026-06-21T01:51:38.1429590Z         }
2026-06-21T01:51:38.1429676Z       }
2026-06-21T01:51:38.1429748Z     },
2026-06-21T01:51:38.1429838Z     {
2026-06-21T01:51:38.1429957Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-21T01:51:38.1431260Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-21T01:51:38.1431371Z       "requiredStages": [
2026-06-21T01:51:38.1431446Z         "impl",
2026-06-21T01:51:38.1431536Z         "unit"
2026-06-21T01:51:38.1431622Z       ],
2026-06-21T01:51:38.1431709Z       "stages": {
2026-06-21T01:51:38.1431800Z         "doc": {
2026-06-21T01:51:38.1431889Z           "complete": false,
2026-06-21T01:51:38.1431990Z           "evidence": []
2026-06-21T01:51:38.1432076Z         },
2026-06-21T01:51:38.1432161Z         "impl": {
2026-06-21T01:51:38.1432261Z           "complete": true,
2026-06-21T01:51:38.1432344Z           "evidence": [
2026-06-21T01:51:38.1432433Z             {
2026-06-21T01:51:38.1432528Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1432630Z               "line": 3165
2026-06-21T01:51:38.1432729Z             }
2026-06-21T01:51:38.1432815Z           ]
2026-06-21T01:51:38.1432896Z         },
2026-06-21T01:51:38.1432997Z         "int": {
2026-06-21T01:51:38.1433095Z           "complete": false,
2026-06-21T01:51:38.1433187Z           "evidence": []
2026-06-21T01:51:38.1433269Z         },
2026-06-21T01:51:38.1433359Z         "unit": {
2026-06-21T01:51:38.1433467Z           "complete": true,
2026-06-21T01:51:38.1433562Z           "evidence": [
2026-06-21T01:51:38.1433649Z             {
2026-06-21T01:51:38.1433748Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1433838Z               "line": 7331
2026-06-21T01:51:38.1433930Z             }
2026-06-21T01:51:38.1434011Z           ]
2026-06-21T01:51:38.1434096Z         }
2026-06-21T01:51:38.1434192Z       }
2026-06-21T01:51:38.1434283Z     },
2026-06-21T01:51:38.1434378Z     {
2026-06-21T01:51:38.1434473Z       "id": "REQ-EP-1",
2026-06-21T01:51:38.1434602Z       "title": "Day-one endpoint types; open type system",
2026-06-21T01:51:38.1434693Z       "requiredStages": [
2026-06-21T01:51:38.1434768Z         "impl",
2026-06-21T01:51:38.1434865Z         "unit"
2026-06-21T01:51:38.1434950Z       ],
2026-06-21T01:51:38.1435036Z       "stages": {
2026-06-21T01:51:38.1435121Z         "doc": {
2026-06-21T01:51:38.1435213Z           "complete": false,
2026-06-21T01:51:38.1435307Z           "evidence": []
2026-06-21T01:51:38.1435398Z         },
2026-06-21T01:51:38.1435485Z         "impl": {
2026-06-21T01:51:38.1435580Z           "complete": true,
2026-06-21T01:51:38.1435669Z           "evidence": [
2026-06-21T01:51:38.1435750Z             {
2026-06-21T01:51:38.1435878Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T01:51:38.1435962Z               "line": 77
2026-06-21T01:51:38.1436057Z             },
2026-06-21T01:51:38.1436148Z             {
2026-06-21T01:51:38.1436263Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T01:51:38.1436358Z               "line": 94
2026-06-21T01:51:38.1436563Z             }
2026-06-21T01:51:38.1436653Z           ]
2026-06-21T01:51:38.1436739Z         },
2026-06-21T01:51:38.1436830Z         "int": {
2026-06-21T01:51:38.1437039Z           "complete": false,
2026-06-21T01:51:38.1437127Z           "evidence": []
2026-06-21T01:51:38.1437217Z         },
2026-06-21T01:51:38.1437297Z         "unit": {
2026-06-21T01:51:38.1437398Z           "complete": true,
2026-06-21T01:51:38.1437488Z           "evidence": [
2026-06-21T01:51:38.1437579Z             {
2026-06-21T01:51:38.1437713Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T01:51:38.1437803Z               "line": 161
2026-06-21T01:51:38.1437893Z             },
2026-06-21T01:51:38.1437974Z             {
2026-06-21T01:51:38.1438099Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T01:51:38.1438188Z               "line": 178
2026-06-21T01:51:38.1438280Z             }
2026-06-21T01:51:38.1438366Z           ]
2026-06-21T01:51:38.1438452Z         }
2026-06-21T01:51:38.1438532Z       }
2026-06-21T01:51:38.1438626Z     },
2026-06-21T01:51:38.1438717Z     {
2026-06-21T01:51:38.1438797Z       "id": "REQ-EP-2",
2026-06-21T01:51:38.1439049Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-21T01:51:38.1439140Z       "requiredStages": [
2026-06-21T01:51:38.1439230Z         "impl",
2026-06-21T01:51:38.1439325Z         "unit"
2026-06-21T01:51:38.1439407Z       ],
2026-06-21T01:51:38.1439502Z       "stages": {
2026-06-21T01:51:38.1439582Z         "doc": {
2026-06-21T01:51:38.1439679Z           "complete": false,
2026-06-21T01:51:38.1439764Z           "evidence": []
2026-06-21T01:51:38.1439849Z         },
2026-06-21T01:51:38.1439941Z         "impl": {
2026-06-21T01:51:38.1440031Z           "complete": true,
2026-06-21T01:51:38.1440131Z           "evidence": [
2026-06-21T01:51:38.1440221Z             {
2026-06-21T01:51:38.1440351Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T01:51:38.1440436Z               "line": 114
2026-06-21T01:51:38.1440522Z             },
2026-06-21T01:51:38.1440619Z             {
2026-06-21T01:51:38.1445224Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T01:51:38.1445386Z               "line": 131
2026-06-21T01:51:38.1445478Z             },
2026-06-21T01:51:38.1445577Z             {
2026-06-21T01:51:38.1445721Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T01:51:38.1445811Z               "line": 138
2026-06-21T01:51:38.1445896Z             }
2026-06-21T01:51:38.1445977Z           ]
2026-06-21T01:51:38.1446059Z         },
2026-06-21T01:51:38.1446145Z         "int": {
2026-06-21T01:51:38.1446239Z           "complete": false,
2026-06-21T01:51:38.1446328Z           "evidence": []
2026-06-21T01:51:38.1446420Z         },
2026-06-21T01:51:38.1446504Z         "unit": {
2026-06-21T01:51:38.1446594Z           "complete": true,
2026-06-21T01:51:38.1446680Z           "evidence": [
2026-06-21T01:51:38.1446761Z             {
2026-06-21T01:51:38.1446899Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T01:51:38.1446999Z               "line": 190
2026-06-21T01:51:38.1447081Z             },
2026-06-21T01:51:38.1447180Z             {
2026-06-21T01:51:38.1447304Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T01:51:38.1447395Z               "line": 208
2026-06-21T01:51:38.1447481Z             },
2026-06-21T01:51:38.1447571Z             {
2026-06-21T01:51:38.1447692Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T01:51:38.1447777Z               "line": 221
2026-06-21T01:51:38.1447866Z             }
2026-06-21T01:51:38.1447948Z           ]
2026-06-21T01:51:38.1448039Z         }
2026-06-21T01:51:38.1448120Z       }
2026-06-21T01:51:38.1448210Z     },
2026-06-21T01:51:38.1448292Z     {
2026-06-21T01:51:38.1448382Z       "id": "REQ-EP-3",
2026-06-21T01:51:38.1448573Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-21T01:51:38.1448669Z       "requiredStages": [
2026-06-21T01:51:38.1448758Z         "impl",
2026-06-21T01:51:38.1449097Z         "unit"
2026-06-21T01:51:38.1449176Z       ],
2026-06-21T01:51:38.1449268Z       "stages": {
2026-06-21T01:51:38.1449475Z         "doc": {
2026-06-21T01:51:38.1449575Z           "complete": false,
2026-06-21T01:51:38.1449662Z           "evidence": []
2026-06-21T01:51:38.1449752Z         },
2026-06-21T01:51:38.1449837Z         "impl": {
2026-06-21T01:51:38.1449929Z           "complete": true,
2026-06-21T01:51:38.1450019Z           "evidence": [
2026-06-21T01:51:38.1450100Z             {
2026-06-21T01:51:38.1450220Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T01:51:38.1450305Z               "line": 31
2026-06-21T01:51:38.1450391Z             },
2026-06-21T01:51:38.1450476Z             {
2026-06-21T01:51:38.1450601Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T01:51:38.1450691Z               "line": 49
2026-06-21T01:51:38.1450767Z             }
2026-06-21T01:51:38.1450859Z           ]
2026-06-21T01:51:38.1450944Z         },
2026-06-21T01:51:38.1451039Z         "int": {
2026-06-21T01:51:38.1451130Z           "complete": false,
2026-06-21T01:51:38.1451221Z           "evidence": []
2026-06-21T01:51:38.1451306Z         },
2026-06-21T01:51:38.1451392Z         "unit": {
2026-06-21T01:51:38.1451484Z           "complete": true,
2026-06-21T01:51:38.1451564Z           "evidence": [
2026-06-21T01:51:38.1451649Z             {
2026-06-21T01:51:38.1451763Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T01:51:38.1451849Z               "line": 156
2026-06-21T01:51:38.1451933Z             },
2026-06-21T01:51:38.1452022Z             {
2026-06-21T01:51:38.1452128Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T01:51:38.1452219Z               "line": 164
2026-06-21T01:51:38.1452300Z             },
2026-06-21T01:51:38.1452389Z             {
2026-06-21T01:51:38.1452505Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T01:51:38.1452591Z               "line": 177
2026-06-21T01:51:38.1452671Z             },
2026-06-21T01:51:38.1452762Z             {
2026-06-21T01:51:38.1452877Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T01:51:38.1452967Z               "line": 200
2026-06-21T01:51:38.1453058Z             },
2026-06-21T01:51:38.1453144Z             {
2026-06-21T01:51:38.1453268Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T01:51:38.1453353Z               "line": 216
2026-06-21T01:51:38.1453435Z             },
2026-06-21T01:51:38.1453516Z             {
2026-06-21T01:51:38.1453634Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T01:51:38.1453721Z               "line": 233
2026-06-21T01:51:38.1453816Z             }
2026-06-21T01:51:38.1453911Z           ]
2026-06-21T01:51:38.1453997Z         }
2026-06-21T01:51:38.1454079Z       }
2026-06-21T01:51:38.1454155Z     },
2026-06-21T01:51:38.1454235Z     {
2026-06-21T01:51:38.1454322Z       "id": "REQ-EP-4",
2026-06-21T01:51:38.1454479Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-21T01:51:38.1454587Z       "requiredStages": [
2026-06-21T01:51:38.1454673Z         "impl",
2026-06-21T01:51:38.1454760Z         "unit"
2026-06-21T01:51:38.1454845Z       ],
2026-06-21T01:51:38.1454944Z       "stages": {
2026-06-21T01:51:38.1455026Z         "doc": {
2026-06-21T01:51:38.1455121Z           "complete": false,
2026-06-21T01:51:38.1455207Z           "evidence": []
2026-06-21T01:51:38.1455288Z         },
2026-06-21T01:51:38.1455370Z         "impl": {
2026-06-21T01:51:38.1455455Z           "complete": true,
2026-06-21T01:51:38.1455550Z           "evidence": [
2026-06-21T01:51:38.1455636Z             {
2026-06-21T01:51:38.1455756Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.1455837Z               "line": 764
2026-06-21T01:51:38.1455922Z             },
2026-06-21T01:51:38.1456009Z             {
2026-06-21T01:51:38.1456117Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.1456213Z               "line": 1127
2026-06-21T01:51:38.1456418Z             },
2026-06-21T01:51:38.1456508Z             {
2026-06-21T01:51:38.1456639Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1456803Z               "line": 2117
2026-06-21T01:51:38.1456893Z             },
2026-06-21T01:51:38.1456980Z             {
2026-06-21T01:51:38.1457101Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:51:38.1457192Z               "line": 118
2026-06-21T01:51:38.1457278Z             },
2026-06-21T01:51:38.1457370Z             {
2026-06-21T01:51:38.1457473Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:51:38.1457559Z               "line": 699
2026-06-21T01:51:38.1457641Z             },
2026-06-21T01:51:38.1457731Z             {
2026-06-21T01:51:38.1457835Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:51:38.1457927Z               "line": 836
2026-06-21T01:51:38.1458017Z             },
2026-06-21T01:51:38.1458097Z             {
2026-06-21T01:51:38.1458218Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.1458313Z               "line": 271
2026-06-21T01:51:38.1458398Z             },
2026-06-21T01:51:38.1458484Z             {
2026-06-21T01:51:38.1458600Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.1458690Z               "line": 458
2026-06-21T01:51:38.1458761Z             },
2026-06-21T01:51:38.1458843Z             {
2026-06-21T01:51:38.1459061Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.1459153Z               "line": 1246
2026-06-21T01:51:38.1459243Z             }
2026-06-21T01:51:38.1459318Z           ]
2026-06-21T01:51:38.1459405Z         },
2026-06-21T01:51:38.1459487Z         "int": {
2026-06-21T01:51:38.1459586Z           "complete": false,
2026-06-21T01:51:38.1459671Z           "evidence": []
2026-06-21T01:51:38.1459760Z         },
2026-06-21T01:51:38.1459857Z         "unit": {
2026-06-21T01:51:38.1459941Z           "complete": true,
2026-06-21T01:51:38.1460035Z           "evidence": [
2026-06-21T01:51:38.1460121Z             {
2026-06-21T01:51:38.1460241Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:51:38.1460335Z               "line": 927
2026-06-21T01:51:38.1460426Z             },
2026-06-21T01:51:38.1460517Z             {
2026-06-21T01:51:38.1460645Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T01:51:38.1460731Z               "line": 76
2026-06-21T01:51:38.1460804Z             },
2026-06-21T01:51:38.1460894Z             {
2026-06-21T01:51:38.1461017Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T01:51:38.1461114Z               "line": 147
2026-06-21T01:51:38.1461203Z             }
2026-06-21T01:51:38.1461289Z           ]
2026-06-21T01:51:38.1461370Z         }
2026-06-21T01:51:38.1461453Z       }
2026-06-21T01:51:38.1461547Z     },
2026-06-21T01:51:38.1461628Z     {
2026-06-21T01:51:38.1461719Z       "id": "REQ-EP-5",
2026-06-21T01:51:38.1462380Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-21T01:51:38.1462493Z       "requiredStages": [
2026-06-21T01:51:38.1462588Z         "impl",
2026-06-21T01:51:38.1462669Z         "unit",
2026-06-21T01:51:38.1462760Z         "int"
2026-06-21T01:51:38.1462846Z       ],
2026-06-21T01:51:38.1462940Z       "stages": {
2026-06-21T01:51:38.1463032Z         "doc": {
2026-06-21T01:51:38.1463127Z           "complete": false,
2026-06-21T01:51:38.1463227Z           "evidence": []
2026-06-21T01:51:38.1463303Z         },
2026-06-21T01:51:38.1463394Z         "impl": {
2026-06-21T01:51:38.1463480Z           "complete": true,
2026-06-21T01:51:38.1463574Z           "evidence": [
2026-06-21T01:51:38.1463662Z             {
2026-06-21T01:51:38.1463790Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.1463884Z               "line": 367
2026-06-21T01:51:38.1464095Z             },
2026-06-21T01:51:38.1464185Z             {
2026-06-21T01:51:38.1464311Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T01:51:38.1464500Z               "line": 18
2026-06-21T01:51:38.1464586Z             },
2026-06-21T01:51:38.1464673Z             {
2026-06-21T01:51:38.1464800Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T01:51:38.1464892Z               "line": 63
2026-06-21T01:51:38.1464982Z             },
2026-06-21T01:51:38.1465072Z             {
2026-06-21T01:51:38.1465185Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T01:51:38.1465276Z               "line": 92
2026-06-21T01:51:38.1465353Z             },
2026-06-21T01:51:38.1465438Z             {
2026-06-21T01:51:38.1465547Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T01:51:38.1465639Z               "line": 167
2026-06-21T01:51:38.1465725Z             },
2026-06-21T01:51:38.1465800Z             {
2026-06-21T01:51:38.1465920Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T01:51:38.1466010Z               "line": 179
2026-06-21T01:51:38.1466091Z             },
2026-06-21T01:51:38.1466177Z             {
2026-06-21T01:51:38.1466297Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.1466397Z               "line": 114
2026-06-21T01:51:38.1466482Z             },
2026-06-21T01:51:38.1466574Z             {
2026-06-21T01:51:38.1466697Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:51:38.1466787Z               "line": 22
2026-06-21T01:51:38.1466874Z             },
2026-06-21T01:51:38.1466965Z             {
2026-06-21T01:51:38.1467087Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:51:38.1467185Z               "line": 145
2026-06-21T01:51:38.1467275Z             },
2026-06-21T01:51:38.1467354Z             {
2026-06-21T01:51:38.1467478Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:51:38.1467554Z               "line": 174
2026-06-21T01:51:38.1467648Z             },
2026-06-21T01:51:38.1467738Z             {
2026-06-21T01:51:38.1467852Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:51:38.1467944Z               "line": 196
2026-06-21T01:51:38.1468033Z             },
2026-06-21T01:51:38.1468119Z             {
2026-06-21T01:51:38.1468234Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:51:38.1468329Z               "line": 221
2026-06-21T01:51:38.1468419Z             },
2026-06-21T01:51:38.1468502Z             {
2026-06-21T01:51:38.1468620Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:51:38.1468710Z               "line": 247
2026-06-21T01:51:38.1468797Z             },
2026-06-21T01:51:38.1468882Z             {
2026-06-21T01:51:38.1469093Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:51:38.1469192Z               "line": 270
2026-06-21T01:51:38.1469278Z             },
2026-06-21T01:51:38.1469373Z             {
2026-06-21T01:51:38.1469494Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.1469583Z               "line": 104
2026-06-21T01:51:38.1469674Z             },
2026-06-21T01:51:38.1469761Z             {
2026-06-21T01:51:38.1469873Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1469955Z               "line": 6068
2026-06-21T01:51:38.1470042Z             },
2026-06-21T01:51:38.1470128Z             {
2026-06-21T01:51:38.1470240Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1470330Z               "line": 6202
2026-06-21T01:51:38.1470417Z             },
2026-06-21T01:51:38.1470506Z             {
2026-06-21T01:51:38.1470610Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1470695Z               "line": 6368
2026-06-21T01:51:38.1470777Z             },
2026-06-21T01:51:38.1470862Z             {
2026-06-21T01:51:38.1470957Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1471050Z               "line": 6896
2026-06-21T01:51:38.1471258Z             }
2026-06-21T01:51:38.1471345Z           ]
2026-06-21T01:51:38.1471435Z         },
2026-06-21T01:51:38.1471606Z         "int": {
2026-06-21T01:51:38.1471712Z           "complete": true,
2026-06-21T01:51:38.1471792Z           "evidence": [
2026-06-21T01:51:38.1471873Z             {
2026-06-21T01:51:38.1472003Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T01:51:38.1472092Z               "line": 16
2026-06-21T01:51:38.1472178Z             },
2026-06-21T01:51:38.1472265Z             {
2026-06-21T01:51:38.1472384Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T01:51:38.1472469Z               "line": 15
2026-06-21T01:51:38.1472551Z             }
2026-06-21T01:51:38.1472638Z           ]
2026-06-21T01:51:38.1472722Z         },
2026-06-21T01:51:38.1472812Z         "unit": {
2026-06-21T01:51:38.1472897Z           "complete": true,
2026-06-21T01:51:38.1472984Z           "evidence": [
2026-06-21T01:51:38.1473067Z             {
2026-06-21T01:51:38.1473190Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T01:51:38.1473287Z               "line": 246
2026-06-21T01:51:38.1473382Z             },
2026-06-21T01:51:38.1473472Z             {
2026-06-21T01:51:38.1473592Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T01:51:38.1473678Z               "line": 306
2026-06-21T01:51:38.1473763Z             },
2026-06-21T01:51:38.1473848Z             {
2026-06-21T01:51:38.1473968Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T01:51:38.1474064Z               "line": 363
2026-06-21T01:51:38.1474158Z             },
2026-06-21T01:51:38.1474236Z             {
2026-06-21T01:51:38.1474359Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:51:38.1474450Z               "line": 286
2026-06-21T01:51:38.1474536Z             },
2026-06-21T01:51:38.1474621Z             {
2026-06-21T01:51:38.1474731Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:51:38.1474832Z               "line": 338
2026-06-21T01:51:38.1474922Z             },
2026-06-21T01:51:38.1475017Z             {
2026-06-21T01:51:38.1475147Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.1475233Z               "line": 783
2026-06-21T01:51:38.1475327Z             },
2026-06-21T01:51:38.1475408Z             {
2026-06-21T01:51:38.1475515Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1475604Z               "line": 8751
2026-06-21T01:51:38.1475721Z             },
2026-06-21T01:51:38.1475802Z             {
2026-06-21T01:51:38.1475909Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1475994Z               "line": 8904
2026-06-21T01:51:38.1476079Z             },
2026-06-21T01:51:38.1476166Z             {
2026-06-21T01:51:38.1476261Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1476356Z               "line": 9493
2026-06-21T01:51:38.1476447Z             },
2026-06-21T01:51:38.1476528Z             {
2026-06-21T01:51:38.1476628Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1476723Z               "line": 9609
2026-06-21T01:51:38.1476814Z             }
2026-06-21T01:51:38.1476909Z           ]
2026-06-21T01:51:38.1476995Z         }
2026-06-21T01:51:38.1477081Z       }
2026-06-21T01:51:38.1477162Z     },
2026-06-21T01:51:38.1477262Z     {
2026-06-21T01:51:38.1477352Z       "id": "REQ-EP-6",
2026-06-21T01:51:38.1479109Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-21T01:51:38.1479218Z       "requiredStages": [
2026-06-21T01:51:38.1479309Z         "doc",
2026-06-21T01:51:38.1479551Z         "impl",
2026-06-21T01:51:38.1479638Z         "unit"
2026-06-21T01:51:38.1479729Z       ],
2026-06-21T01:51:38.1479924Z       "stages": {
2026-06-21T01:51:38.1480011Z         "doc": {
2026-06-21T01:51:38.1480114Z           "complete": true,
2026-06-21T01:51:38.1480205Z           "evidence": [
2026-06-21T01:51:38.1480293Z             {
2026-06-21T01:51:38.1480397Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.1480492Z               "line": 227
2026-06-21T01:51:38.1480583Z             }
2026-06-21T01:51:38.1480669Z           ]
2026-06-21T01:51:38.1480753Z         },
2026-06-21T01:51:38.1480839Z         "impl": {
2026-06-21T01:51:38.1480939Z           "complete": true,
2026-06-21T01:51:38.1481024Z           "evidence": [
2026-06-21T01:51:38.1481108Z             {
2026-06-21T01:51:38.1481237Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.1481323Z               "line": 212
2026-06-21T01:51:38.1481409Z             }
2026-06-21T01:51:38.1481494Z           ]
2026-06-21T01:51:38.1481590Z         },
2026-06-21T01:51:38.1481675Z         "int": {
2026-06-21T01:51:38.1481770Z           "complete": true,
2026-06-21T01:51:38.1481876Z           "evidence": [
2026-06-21T01:51:38.1481962Z             {
2026-06-21T01:51:38.1482090Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T01:51:38.1482176Z               "line": 18
2026-06-21T01:51:38.1482263Z             }
2026-06-21T01:51:38.1482347Z           ]
2026-06-21T01:51:38.1482433Z         },
2026-06-21T01:51:38.1482525Z         "unit": {
2026-06-21T01:51:38.1482620Z           "complete": true,
2026-06-21T01:51:38.1482710Z           "evidence": [
2026-06-21T01:51:38.1482796Z             {
2026-06-21T01:51:38.1482926Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.1483015Z               "line": 556
2026-06-21T01:51:38.1483106Z             },
2026-06-21T01:51:38.1483193Z             {
2026-06-21T01:51:38.1483310Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.1483410Z               "line": 904
2026-06-21T01:51:38.1483491Z             }
2026-06-21T01:51:38.1483581Z           ]
2026-06-21T01:51:38.1483675Z         }
2026-06-21T01:51:38.1483764Z       }
2026-06-21T01:51:38.1483856Z     },
2026-06-21T01:51:38.1483938Z     {
2026-06-21T01:51:38.1484037Z       "id": "REQ-EP-7",
2026-06-21T01:51:38.1485702Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-21T01:51:38.1485802Z       "requiredStages": [
2026-06-21T01:51:38.1485887Z         "doc",
2026-06-21T01:51:38.1485983Z         "impl",
2026-06-21T01:51:38.1486070Z         "unit"
2026-06-21T01:51:38.1486154Z       ],
2026-06-21T01:51:38.1486254Z       "stages": {
2026-06-21T01:51:38.1486339Z         "doc": {
2026-06-21T01:51:38.1486430Z           "complete": true,
2026-06-21T01:51:38.1486521Z           "evidence": [
2026-06-21T01:51:38.1486606Z             {
2026-06-21T01:51:38.1486711Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.1486802Z               "line": 490
2026-06-21T01:51:38.1486878Z             }
2026-06-21T01:51:38.1486963Z           ]
2026-06-21T01:51:38.1487046Z         },
2026-06-21T01:51:38.1487136Z         "impl": {
2026-06-21T01:51:38.1487231Z           "complete": true,
2026-06-21T01:51:38.1487326Z           "evidence": [
2026-06-21T01:51:38.1487403Z             {
2026-06-21T01:51:38.1487522Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:51:38.1487597Z               "line": 505
2026-06-21T01:51:38.1487689Z             },
2026-06-21T01:51:38.1487774Z             {
2026-06-21T01:51:38.1487976Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T01:51:38.1488071Z               "line": 87
2026-06-21T01:51:38.1488222Z             },
2026-06-21T01:51:38.1488310Z             {
2026-06-21T01:51:38.1488432Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.1488522Z               "line": 81
2026-06-21T01:51:38.1488617Z             },
2026-06-21T01:51:38.1488693Z             {
2026-06-21T01:51:38.1488810Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.1488896Z               "line": 166
2026-06-21T01:51:38.1489060Z             },
2026-06-21T01:51:38.1489144Z             {
2026-06-21T01:51:38.1489244Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1489336Z               "line": 1645
2026-06-21T01:51:38.1489416Z             }
2026-06-21T01:51:38.1489501Z           ]
2026-06-21T01:51:38.1489579Z         },
2026-06-21T01:51:38.1489660Z         "int": {
2026-06-21T01:51:38.1489764Z           "complete": false,
2026-06-21T01:51:38.1489850Z           "evidence": []
2026-06-21T01:51:38.1489941Z         },
2026-06-21T01:51:38.1490026Z         "unit": {
2026-06-21T01:51:38.1490126Z           "complete": true,
2026-06-21T01:51:38.1490203Z           "evidence": [
2026-06-21T01:51:38.1490294Z             {
2026-06-21T01:51:38.1490413Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:51:38.1490489Z               "line": 623
2026-06-21T01:51:38.1490580Z             },
2026-06-21T01:51:38.1490656Z             {
2026-06-21T01:51:38.1490760Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:51:38.1490853Z               "line": 212
2026-06-21T01:51:38.1490938Z             },
2026-06-21T01:51:38.1491027Z             {
2026-06-21T01:51:38.1491133Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T01:51:38.1491224Z               "line": 307
2026-06-21T01:51:38.1491304Z             },
2026-06-21T01:51:38.1491389Z             {
2026-06-21T01:51:38.1491499Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1491589Z               "line": 7724
2026-06-21T01:51:38.1491677Z             },
2026-06-21T01:51:38.1491754Z             {
2026-06-21T01:51:38.1491864Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1491941Z               "line": 7751
2026-06-21T01:51:38.1492030Z             }
2026-06-21T01:51:38.1492116Z           ]
2026-06-21T01:51:38.1492198Z         }
2026-06-21T01:51:38.1492289Z       }
2026-06-21T01:51:38.1492364Z     },
2026-06-21T01:51:38.1492451Z     {
2026-06-21T01:51:38.1492541Z       "id": "REQ-FRONT-1",
2026-06-21T01:51:38.1492717Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-21T01:51:38.1492804Z       "requiredStages": [],
2026-06-21T01:51:38.1492893Z       "stages": {
2026-06-21T01:51:38.1492984Z         "doc": {
2026-06-21T01:51:38.1493065Z           "complete": false,
2026-06-21T01:51:38.1493166Z           "evidence": []
2026-06-21T01:51:38.1493250Z         },
2026-06-21T01:51:38.1493351Z         "impl": {
2026-06-21T01:51:38.1493443Z           "complete": false,
2026-06-21T01:51:38.1493546Z           "evidence": []
2026-06-21T01:51:38.1493632Z         },
2026-06-21T01:51:38.1493715Z         "int": {
2026-06-21T01:51:38.1493820Z           "complete": false,
2026-06-21T01:51:38.1493899Z           "evidence": []
2026-06-21T01:51:38.1493979Z         },
2026-06-21T01:51:38.1494070Z         "unit": {
2026-06-21T01:51:38.1494165Z           "complete": false,
2026-06-21T01:51:38.1494263Z           "evidence": []
2026-06-21T01:51:38.1494344Z         }
2026-06-21T01:51:38.1494436Z       }
2026-06-21T01:51:38.1494517Z     },
2026-06-21T01:51:38.1494592Z     {
2026-06-21T01:51:38.1494702Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-21T01:51:38.1500167Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-21T01:51:38.1500506Z       "requiredStages": [
2026-06-21T01:51:38.1500591Z         "int"
2026-06-21T01:51:38.1500677Z       ],
2026-06-21T01:51:38.1500763Z       "stages": {
2026-06-21T01:51:38.1500859Z         "doc": {
2026-06-21T01:51:38.1500954Z           "complete": false,
2026-06-21T01:51:38.1501049Z           "evidence": []
2026-06-21T01:51:38.1501136Z         },
2026-06-21T01:51:38.1501216Z         "impl": {
2026-06-21T01:51:38.1501311Z           "complete": false,
2026-06-21T01:51:38.1501383Z           "evidence": []
2026-06-21T01:51:38.1501474Z         },
2026-06-21T01:51:38.1501564Z         "int": {
2026-06-21T01:51:38.1501654Z           "complete": true,
2026-06-21T01:51:38.1501747Z           "evidence": [
2026-06-21T01:51:38.1501822Z             {
2026-06-21T01:51:38.1501959Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T01:51:38.1502044Z               "line": 300
2026-06-21T01:51:38.1502135Z             }
2026-06-21T01:51:38.1502224Z           ]
2026-06-21T01:51:38.1502309Z         },
2026-06-21T01:51:38.1502400Z         "unit": {
2026-06-21T01:51:38.1502481Z           "complete": false,
2026-06-21T01:51:38.1502581Z           "evidence": []
2026-06-21T01:51:38.1502666Z         }
2026-06-21T01:51:38.1502758Z       }
2026-06-21T01:51:38.1502835Z     },
2026-06-21T01:51:38.1502909Z     {
2026-06-21T01:51:38.1503011Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-21T01:51:38.1505587Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-21T01:51:38.1505716Z       "requiredStages": [
2026-06-21T01:51:38.1505800Z         "impl",
2026-06-21T01:51:38.1505883Z         "unit",
2026-06-21T01:51:38.1505973Z         "int"
2026-06-21T01:51:38.1506149Z       ],
2026-06-21T01:51:38.1506226Z       "stages": {
2026-06-21T01:51:38.1506312Z         "doc": {
2026-06-21T01:51:38.1506478Z           "complete": false,
2026-06-21T01:51:38.1506575Z           "evidence": []
2026-06-21T01:51:38.1506659Z         },
2026-06-21T01:51:38.1506749Z         "impl": {
2026-06-21T01:51:38.1506846Z           "complete": true,
2026-06-21T01:51:38.1506932Z           "evidence": [
2026-06-21T01:51:38.1507016Z             {
2026-06-21T01:51:38.1507132Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.1507228Z               "line": 257
2026-06-21T01:51:38.1507303Z             }
2026-06-21T01:51:38.1507388Z           ]
2026-06-21T01:51:38.1507474Z         },
2026-06-21T01:51:38.1507546Z         "int": {
2026-06-21T01:51:38.1507636Z           "complete": true,
2026-06-21T01:51:38.1507726Z           "evidence": [
2026-06-21T01:51:38.1507803Z             {
2026-06-21T01:51:38.1507937Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-21T01:51:38.1508036Z               "line": 93
2026-06-21T01:51:38.1508127Z             }
2026-06-21T01:51:38.1508208Z           ]
2026-06-21T01:51:38.1508308Z         },
2026-06-21T01:51:38.1508393Z         "unit": {
2026-06-21T01:51:38.1508490Z           "complete": true,
2026-06-21T01:51:38.1508580Z           "evidence": [
2026-06-21T01:51:38.1508665Z             {
2026-06-21T01:51:38.1508786Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.1508876Z               "line": 802
2026-06-21T01:51:38.1509028Z             },
2026-06-21T01:51:38.1509110Z             {
2026-06-21T01:51:38.1509228Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.1509314Z               "line": 824
2026-06-21T01:51:38.1509401Z             },
2026-06-21T01:51:38.1509500Z             {
2026-06-21T01:51:38.1509609Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.1509709Z               "line": 855
2026-06-21T01:51:38.1509781Z             }
2026-06-21T01:51:38.1509879Z           ]
2026-06-21T01:51:38.1509954Z         }
2026-06-21T01:51:38.1510045Z       }
2026-06-21T01:51:38.1510132Z     },
2026-06-21T01:51:38.1510217Z     {
2026-06-21T01:51:38.1510331Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-21T01:51:38.1512826Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-21T01:51:38.1512927Z       "requiredStages": [
2026-06-21T01:51:38.1513023Z         "doc",
2026-06-21T01:51:38.1513113Z         "impl",
2026-06-21T01:51:38.1513198Z         "unit",
2026-06-21T01:51:38.1513290Z         "int"
2026-06-21T01:51:38.1513370Z       ],
2026-06-21T01:51:38.1513465Z       "stages": {
2026-06-21T01:51:38.1513551Z         "doc": {
2026-06-21T01:51:38.1513652Z           "complete": true,
2026-06-21T01:51:38.1513747Z           "evidence": [
2026-06-21T01:51:38.1513832Z             {
2026-06-21T01:51:38.1513948Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.1514037Z               "line": 333
2026-06-21T01:51:38.1514123Z             }
2026-06-21T01:51:38.1514195Z           ]
2026-06-21T01:51:38.1514286Z         },
2026-06-21T01:51:38.1514380Z         "impl": {
2026-06-21T01:51:38.1514457Z           "complete": true,
2026-06-21T01:51:38.1514554Z           "evidence": [
2026-06-21T01:51:38.1514762Z             {
2026-06-21T01:51:38.1514897Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1515086Z               "line": 494
2026-06-21T01:51:38.1515171Z             },
2026-06-21T01:51:38.1515257Z             {
2026-06-21T01:51:38.1515379Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1515464Z               "line": 499
2026-06-21T01:51:38.1515546Z             },
2026-06-21T01:51:38.1515637Z             {
2026-06-21T01:51:38.1515755Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1515852Z               "line": 874
2026-06-21T01:51:38.1515942Z             },
2026-06-21T01:51:38.1516027Z             {
2026-06-21T01:51:38.1516157Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1516242Z               "line": 915
2026-06-21T01:51:38.1516332Z             },
2026-06-21T01:51:38.1516418Z             {
2026-06-21T01:51:38.1516533Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1516638Z               "line": 926
2026-06-21T01:51:38.1516724Z             },
2026-06-21T01:51:38.1516806Z             {
2026-06-21T01:51:38.1516919Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.1517009Z               "line": 358
2026-06-21T01:51:38.1517087Z             }
2026-06-21T01:51:38.1517163Z           ]
2026-06-21T01:51:38.1517243Z         },
2026-06-21T01:51:38.1517319Z         "int": {
2026-06-21T01:51:38.1517416Z           "complete": true,
2026-06-21T01:51:38.1517506Z           "evidence": [
2026-06-21T01:51:38.1517591Z             {
2026-06-21T01:51:38.1517726Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-21T01:51:38.1517812Z               "line": 30
2026-06-21T01:51:38.1517900Z             }
2026-06-21T01:51:38.1517972Z           ]
2026-06-21T01:51:38.1518062Z         },
2026-06-21T01:51:38.1518139Z         "unit": {
2026-06-21T01:51:38.1518229Z           "complete": true,
2026-06-21T01:51:38.1518329Z           "evidence": [
2026-06-21T01:51:38.1518406Z             {
2026-06-21T01:51:38.1518530Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1518620Z               "line": 1493
2026-06-21T01:51:38.1518707Z             },
2026-06-21T01:51:38.1518787Z             {
2026-06-21T01:51:38.1518911Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1519070Z               "line": 1518
2026-06-21T01:51:38.1519174Z             },
2026-06-21T01:51:38.1519254Z             {
2026-06-21T01:51:38.1519370Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1519464Z               "line": 1535
2026-06-21T01:51:38.1519550Z             },
2026-06-21T01:51:38.1519627Z             {
2026-06-21T01:51:38.1519751Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1519841Z               "line": 1578
2026-06-21T01:51:38.1519931Z             }
2026-06-21T01:51:38.1520014Z           ]
2026-06-21T01:51:38.1520117Z         }
2026-06-21T01:51:38.1520188Z       }
2026-06-21T01:51:38.1520279Z     },
2026-06-21T01:51:38.1520369Z     {
2026-06-21T01:51:38.1520510Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-21T01:51:38.1523088Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-21T01:51:38.1523400Z       "requiredStages": [],
2026-06-21T01:51:38.1523482Z       "stages": {
2026-06-21T01:51:38.1523573Z         "doc": {
2026-06-21T01:51:38.1523663Z           "complete": false,
2026-06-21T01:51:38.1523758Z           "evidence": []
2026-06-21T01:51:38.1523850Z         },
2026-06-21T01:51:38.1523931Z         "impl": {
2026-06-21T01:51:38.1524021Z           "complete": false,
2026-06-21T01:51:38.1524102Z           "evidence": []
2026-06-21T01:51:38.1524188Z         },
2026-06-21T01:51:38.1524274Z         "int": {
2026-06-21T01:51:38.1524359Z           "complete": false,
2026-06-21T01:51:38.1524455Z           "evidence": []
2026-06-21T01:51:38.1524536Z         },
2026-06-21T01:51:38.1528319Z         "unit": {
2026-06-21T01:51:38.1528451Z           "complete": false,
2026-06-21T01:51:38.1528546Z           "evidence": []
2026-06-21T01:51:38.1528637Z         }
2026-06-21T01:51:38.1528734Z       }
2026-06-21T01:51:38.1528827Z     },
2026-06-21T01:51:38.1528908Z     {
2026-06-21T01:51:38.1529146Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-21T01:51:38.1533011Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-21T01:51:38.1533150Z       "requiredStages": [
2026-06-21T01:51:38.1533244Z         "impl",
2026-06-21T01:51:38.1533335Z         "unit",
2026-06-21T01:51:38.1533417Z         "int"
2026-06-21T01:51:38.1533502Z       ],
2026-06-21T01:51:38.1533587Z       "stages": {
2026-06-21T01:51:38.1533667Z         "doc": {
2026-06-21T01:51:38.1533758Z           "complete": false,
2026-06-21T01:51:38.1533843Z           "evidence": []
2026-06-21T01:51:38.1533937Z         },
2026-06-21T01:51:38.1534013Z         "impl": {
2026-06-21T01:51:38.1534109Z           "complete": true,
2026-06-21T01:51:38.1534190Z           "evidence": [
2026-06-21T01:51:38.1534285Z             {
2026-06-21T01:51:38.1534406Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1534510Z               "line": 570
2026-06-21T01:51:38.1534600Z             },
2026-06-21T01:51:38.1534677Z             {
2026-06-21T01:51:38.1534796Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1534886Z               "line": 594
2026-06-21T01:51:38.1534967Z             },
2026-06-21T01:51:38.1535049Z             {
2026-06-21T01:51:38.1535163Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1535253Z               "line": 620
2026-06-21T01:51:38.1535335Z             },
2026-06-21T01:51:38.1535425Z             {
2026-06-21T01:51:38.1535544Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1535626Z               "line": 679
2026-06-21T01:51:38.1535702Z             },
2026-06-21T01:51:38.1535936Z             {
2026-06-21T01:51:38.1536065Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:51:38.1536229Z               "line": 89
2026-06-21T01:51:38.1536321Z             },
2026-06-21T01:51:38.1536400Z             {
2026-06-21T01:51:38.1536522Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:51:38.1536609Z               "line": 134
2026-06-21T01:51:38.1536691Z             }
2026-06-21T01:51:38.1536781Z           ]
2026-06-21T01:51:38.1536856Z         },
2026-06-21T01:51:38.1536948Z         "int": {
2026-06-21T01:51:38.1537039Z           "complete": true,
2026-06-21T01:51:38.1537133Z           "evidence": [
2026-06-21T01:51:38.1537214Z             {
2026-06-21T01:51:38.1537368Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-21T01:51:38.1537462Z               "line": 20
2026-06-21T01:51:38.1537544Z             }
2026-06-21T01:51:38.1537630Z           ]
2026-06-21T01:51:38.1537715Z         },
2026-06-21T01:51:38.1537810Z         "unit": {
2026-06-21T01:51:38.1537902Z           "complete": true,
2026-06-21T01:51:38.1538002Z           "evidence": [
2026-06-21T01:51:38.1538087Z             {
2026-06-21T01:51:38.1538207Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1538302Z               "line": 1047
2026-06-21T01:51:38.1538387Z             },
2026-06-21T01:51:38.1538468Z             {
2026-06-21T01:51:38.1538598Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:51:38.1538692Z               "line": 445
2026-06-21T01:51:38.1538778Z             }
2026-06-21T01:51:38.1552905Z           ]
2026-06-21T01:51:38.1553053Z         }
2026-06-21T01:51:38.1553129Z       }
2026-06-21T01:51:38.1553220Z     },
2026-06-21T01:51:38.1553307Z     {
2026-06-21T01:51:38.1553454Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-21T01:51:38.1556203Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-21T01:51:38.1556349Z       "requiredStages": [
2026-06-21T01:51:38.1556436Z         "doc",
2026-06-21T01:51:38.1556532Z         "impl",
2026-06-21T01:51:38.1556621Z         "unit",
2026-06-21T01:51:38.1556708Z         "int"
2026-06-21T01:51:38.1556794Z       ],
2026-06-21T01:51:38.1556884Z       "stages": {
2026-06-21T01:51:38.1556979Z         "doc": {
2026-06-21T01:51:38.1557071Z           "complete": true,
2026-06-21T01:51:38.1557175Z           "evidence": [
2026-06-21T01:51:38.1557269Z             {
2026-06-21T01:51:38.1557383Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.1557479Z               "line": 302
2026-06-21T01:51:38.1557553Z             }
2026-06-21T01:51:38.1557638Z           ]
2026-06-21T01:51:38.1557715Z         },
2026-06-21T01:51:38.1557806Z         "impl": {
2026-06-21T01:51:38.1557891Z           "complete": true,
2026-06-21T01:51:38.1557981Z           "evidence": [
2026-06-21T01:51:38.1558063Z             {
2026-06-21T01:51:38.1558197Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:51:38.1558292Z               "line": 108
2026-06-21T01:51:38.1558373Z             },
2026-06-21T01:51:38.1558449Z             {
2026-06-21T01:51:38.1558573Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.1558664Z               "line": 843
2026-06-21T01:51:38.1559037Z             },
2026-06-21T01:51:38.1559122Z             {
2026-06-21T01:51:38.1559250Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.1559450Z               "line": 1043
2026-06-21T01:51:38.1559536Z             },
2026-06-21T01:51:38.1559623Z             {
2026-06-21T01:51:38.1559742Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1559836Z               "line": 23
2026-06-21T01:51:38.1559918Z             },
2026-06-21T01:51:38.1560010Z             {
2026-06-21T01:51:38.1560131Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1560221Z               "line": 113
2026-06-21T01:51:38.1560308Z             },
2026-06-21T01:51:38.1560385Z             {
2026-06-21T01:51:38.1560508Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1560594Z               "line": 158
2026-06-21T01:51:38.1560680Z             },
2026-06-21T01:51:38.1560752Z             {
2026-06-21T01:51:38.1560889Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1560971Z               "line": 218
2026-06-21T01:51:38.1561052Z             },
2026-06-21T01:51:38.1561142Z             {
2026-06-21T01:51:38.1561252Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1561338Z               "line": 261
2026-06-21T01:51:38.1561419Z             },
2026-06-21T01:51:38.1561494Z             {
2026-06-21T01:51:38.1561615Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1561695Z               "line": 275
2026-06-21T01:51:38.1561776Z             },
2026-06-21T01:51:38.1561858Z             {
2026-06-21T01:51:38.1561977Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1562071Z               "line": 320
2026-06-21T01:51:38.1562153Z             },
2026-06-21T01:51:38.1562240Z             {
2026-06-21T01:51:38.1562353Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1562443Z               "line": 347
2026-06-21T01:51:38.1562533Z             },
2026-06-21T01:51:38.1562619Z             {
2026-06-21T01:51:38.1562736Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1562821Z               "line": 359
2026-06-21T01:51:38.1562908Z             },
2026-06-21T01:51:38.1562981Z             {
2026-06-21T01:51:38.1563103Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1563190Z               "line": 373
2026-06-21T01:51:38.1563275Z             },
2026-06-21T01:51:38.1563366Z             {
2026-06-21T01:51:38.1563475Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1563572Z               "line": 400
2026-06-21T01:51:38.1563652Z             },
2026-06-21T01:51:38.1563742Z             {
2026-06-21T01:51:38.1563867Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1563957Z               "line": 643
2026-06-21T01:51:38.1564047Z             },
2026-06-21T01:51:38.1564134Z             {
2026-06-21T01:51:38.1564257Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1564338Z               "line": 989
2026-06-21T01:51:38.1564419Z             },
2026-06-21T01:51:38.1564497Z             {
2026-06-21T01:51:38.1564619Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1564715Z               "line": 260
2026-06-21T01:51:38.1564797Z             },
2026-06-21T01:51:38.1564892Z             {
2026-06-21T01:51:38.1565001Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1565093Z               "line": 1143
2026-06-21T01:51:38.1565174Z             },
2026-06-21T01:51:38.1565258Z             {
2026-06-21T01:51:38.1565381Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1565472Z               "line": 1215
2026-06-21T01:51:38.1565561Z             },
2026-06-21T01:51:38.1565636Z             {
2026-06-21T01:51:38.1565751Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1565956Z               "line": 1227
2026-06-21T01:51:38.1566032Z             },
2026-06-21T01:51:38.1566186Z             {
2026-06-21T01:51:38.1566304Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1566396Z               "line": 1842
2026-06-21T01:51:38.1566476Z             },
2026-06-21T01:51:38.1566562Z             {
2026-06-21T01:51:38.1566681Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1566768Z               "line": 188
2026-06-21T01:51:38.1566853Z             },
2026-06-21T01:51:38.1566933Z             {
2026-06-21T01:51:38.1567054Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1567138Z               "line": 265
2026-06-21T01:51:38.1567224Z             },
2026-06-21T01:51:38.1567311Z             {
2026-06-21T01:51:38.1567425Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1567520Z               "line": 276
2026-06-21T01:51:38.1567601Z             },
2026-06-21T01:51:38.1567693Z             {
2026-06-21T01:51:38.1567801Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1567896Z               "line": 329
2026-06-21T01:51:38.1567977Z             },
2026-06-21T01:51:38.1568048Z             {
2026-06-21T01:51:38.1568170Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:51:38.1568260Z               "line": 56
2026-06-21T01:51:38.1568347Z             },
2026-06-21T01:51:38.1568424Z             {
2026-06-21T01:51:38.1568546Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:51:38.1568638Z               "line": 188
2026-06-21T01:51:38.1568723Z             },
2026-06-21T01:51:38.1568808Z             {
2026-06-21T01:51:38.1568914Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T01:51:38.1569077Z               "line": 82
2026-06-21T01:51:38.1569166Z             },
2026-06-21T01:51:38.1569253Z             {
2026-06-21T01:51:38.1569371Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1569466Z               "line": 308
2026-06-21T01:51:38.1569548Z             },
2026-06-21T01:51:38.1569639Z             {
2026-06-21T01:51:38.1569763Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.1569848Z               "line": 424
2026-06-21T01:51:38.1569940Z             },
2026-06-21T01:51:38.1570029Z             {
2026-06-21T01:51:38.1570135Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1570231Z               "line": 2006
2026-06-21T01:51:38.1570311Z             }
2026-06-21T01:51:38.1570392Z           ]
2026-06-21T01:51:38.1570469Z         },
2026-06-21T01:51:38.1570556Z         "int": {
2026-06-21T01:51:38.1570654Z           "complete": true,
2026-06-21T01:51:38.1570735Z           "evidence": [
2026-06-21T01:51:38.1570825Z             {
2026-06-21T01:51:38.1570940Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T01:51:38.1571030Z               "line": 57
2026-06-21T01:51:38.1571110Z             },
2026-06-21T01:51:38.1571197Z             {
2026-06-21T01:51:38.1571312Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T01:51:38.1571406Z               "line": 41
2026-06-21T01:51:38.1571493Z             }
2026-06-21T01:51:38.1571579Z           ]
2026-06-21T01:51:38.1571664Z         },
2026-06-21T01:51:38.1571745Z         "unit": {
2026-06-21T01:51:38.1571846Z           "complete": true,
2026-06-21T01:51:38.1571936Z           "evidence": [
2026-06-21T01:51:38.1572017Z             {
2026-06-21T01:51:38.1572142Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:51:38.1572227Z               "line": 532
2026-06-21T01:51:38.1572318Z             },
2026-06-21T01:51:38.1572393Z             {
2026-06-21T01:51:38.1572523Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:51:38.1572618Z               "line": 757
2026-06-21T01:51:38.1572694Z             },
2026-06-21T01:51:38.1572776Z             {
2026-06-21T01:51:38.1572918Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1573230Z               "line": 1067
2026-06-21T01:51:38.1573320Z             },
2026-06-21T01:51:38.1573516Z             {
2026-06-21T01:51:38.1573653Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1573740Z               "line": 1101
2026-06-21T01:51:38.1573836Z             },
2026-06-21T01:51:38.1573921Z             {
2026-06-21T01:51:38.1574045Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1574141Z               "line": 1143
2026-06-21T01:51:38.1574226Z             },
2026-06-21T01:51:38.1574311Z             {
2026-06-21T01:51:38.1574427Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1574522Z               "line": 1215
2026-06-21T01:51:38.1574598Z             },
2026-06-21T01:51:38.1574684Z             {
2026-06-21T01:51:38.1574803Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1574884Z               "line": 1228
2026-06-21T01:51:38.1574980Z             },
2026-06-21T01:51:38.1575061Z             {
2026-06-21T01:51:38.1575184Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1575260Z               "line": 1251
2026-06-21T01:51:38.1575343Z             },
2026-06-21T01:51:38.1575428Z             {
2026-06-21T01:51:38.1575533Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1575624Z               "line": 1277
2026-06-21T01:51:38.1575701Z             },
2026-06-21T01:51:38.1575785Z             {
2026-06-21T01:51:38.1575898Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1575994Z               "line": 1291
2026-06-21T01:51:38.1576079Z             },
2026-06-21T01:51:38.1576154Z             {
2026-06-21T01:51:38.1576273Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1576365Z               "line": 1315
2026-06-21T01:51:38.1576445Z             },
2026-06-21T01:51:38.1576520Z             {
2026-06-21T01:51:38.1576646Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1576751Z               "line": 1447
2026-06-21T01:51:38.1576830Z             },
2026-06-21T01:51:38.1576912Z             {
2026-06-21T01:51:38.1577032Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1577127Z               "line": 1623
2026-06-21T01:51:38.1577217Z             },
2026-06-21T01:51:38.1577299Z             {
2026-06-21T01:51:38.1577418Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1577508Z               "line": 1678
2026-06-21T01:51:38.1577600Z             },
2026-06-21T01:51:38.1577680Z             {
2026-06-21T01:51:38.1577803Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1577896Z               "line": 1724
2026-06-21T01:51:38.1577981Z             },
2026-06-21T01:51:38.1578060Z             {
2026-06-21T01:51:38.1578176Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1578277Z               "line": 1769
2026-06-21T01:51:38.1578356Z             },
2026-06-21T01:51:38.1578447Z             {
2026-06-21T01:51:38.1578585Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1578669Z               "line": 1813
2026-06-21T01:51:38.1578758Z             },
2026-06-21T01:51:38.1578840Z             {
2026-06-21T01:51:38.1579030Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1579107Z               "line": 1855
2026-06-21T01:51:38.1579198Z             },
2026-06-21T01:51:38.1579283Z             {
2026-06-21T01:51:38.1579388Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1579484Z               "line": 2176
2026-06-21T01:51:38.1579570Z             },
2026-06-21T01:51:38.1579651Z             {
2026-06-21T01:51:38.1579779Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:51:38.1579876Z               "line": 217
2026-06-21T01:51:38.1579955Z             },
2026-06-21T01:51:38.1580137Z             {
2026-06-21T01:51:38.1580260Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:51:38.1580457Z               "line": 233
2026-06-21T01:51:38.1580547Z             },
2026-06-21T01:51:38.1580633Z             {
2026-06-21T01:51:38.1580743Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:51:38.1580834Z               "line": 254
2026-06-21T01:51:38.1580918Z             },
2026-06-21T01:51:38.1581005Z             {
2026-06-21T01:51:38.1581111Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:51:38.1581210Z               "line": 265
2026-06-21T01:51:38.1581290Z             },
2026-06-21T01:51:38.1581380Z             {
2026-06-21T01:51:38.1581505Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:51:38.1581590Z               "line": 278
2026-06-21T01:51:38.1581675Z             },
2026-06-21T01:51:38.1581762Z             {
2026-06-21T01:51:38.1581877Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:51:38.1581971Z               "line": 289
2026-06-21T01:51:38.1582058Z             },
2026-06-21T01:51:38.1582148Z             {
2026-06-21T01:51:38.1582262Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:51:38.1582353Z               "line": 301
2026-06-21T01:51:38.1582435Z             },
2026-06-21T01:51:38.1582525Z             {
2026-06-21T01:51:38.1582629Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:51:38.1582721Z               "line": 312
2026-06-21T01:51:38.1582806Z             },
2026-06-21T01:51:38.1582882Z             {
2026-06-21T01:51:38.1583002Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:51:38.1583083Z               "line": 323
2026-06-21T01:51:38.1583168Z             },
2026-06-21T01:51:38.1583245Z             {
2026-06-21T01:51:38.1583356Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:51:38.1583445Z               "line": 332
2026-06-21T01:51:38.1583521Z             },
2026-06-21T01:51:38.1583610Z             {
2026-06-21T01:51:38.1583725Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:51:38.1583823Z               "line": 342
2026-06-21T01:51:38.1583913Z             },
2026-06-21T01:51:38.1583990Z             {
2026-06-21T01:51:38.1584110Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:51:38.1584195Z               "line": 358
2026-06-21T01:51:38.1584280Z             },
2026-06-21T01:51:38.1584348Z             {
2026-06-21T01:51:38.1584472Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1584557Z               "line": 758
2026-06-21T01:51:38.1584644Z             },
2026-06-21T01:51:38.1584730Z             {
2026-06-21T01:51:38.1584843Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1584935Z               "line": 794
2026-06-21T01:51:38.1585020Z             },
2026-06-21T01:51:38.1585110Z             {
2026-06-21T01:51:38.1585230Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.1585321Z               "line": 966
2026-06-21T01:51:38.1585416Z             },
2026-06-21T01:51:38.1585501Z             {
2026-06-21T01:51:38.1585617Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T01:51:38.1585697Z               "line": 145
2026-06-21T01:51:38.1585778Z             },
2026-06-21T01:51:38.1585865Z             {
2026-06-21T01:51:38.1585974Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T01:51:38.1586064Z               "line": 224
2026-06-21T01:51:38.1586145Z             },
2026-06-21T01:51:38.1586237Z             {
2026-06-21T01:51:38.1586345Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T01:51:38.1586435Z               "line": 293
2026-06-21T01:51:38.1586521Z             },
2026-06-21T01:51:38.1586602Z             {
2026-06-21T01:51:38.1586728Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T01:51:38.1586814Z               "line": 17
2026-06-21T01:51:38.1587001Z             },
2026-06-21T01:51:38.1587090Z             {
2026-06-21T01:51:38.1587206Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T01:51:38.1587367Z               "line": 104
2026-06-21T01:51:38.1587453Z             }
2026-06-21T01:51:38.1587530Z           ]
2026-06-21T01:51:38.1587606Z         }
2026-06-21T01:51:38.1587701Z       }
2026-06-21T01:51:38.1587773Z     },
2026-06-21T01:51:38.1587864Z     {
2026-06-21T01:51:38.1587983Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-21T01:51:38.1591103Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-21T01:51:38.1591240Z       "requiredStages": [
2026-06-21T01:51:38.1591328Z         "doc",
2026-06-21T01:51:38.1591404Z         "impl",
2026-06-21T01:51:38.1591492Z         "unit",
2026-06-21T01:51:38.1591579Z         "int"
2026-06-21T01:51:38.1591666Z       ],
2026-06-21T01:51:38.1591756Z       "stages": {
2026-06-21T01:51:38.1591840Z         "doc": {
2026-06-21T01:51:38.1591925Z           "complete": true,
2026-06-21T01:51:38.1592012Z           "evidence": [
2026-06-21T01:51:38.1592104Z             {
2026-06-21T01:51:38.1592212Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.1592312Z               "line": 388
2026-06-21T01:51:38.1592403Z             }
2026-06-21T01:51:38.1592474Z           ]
2026-06-21T01:51:38.1592560Z         },
2026-06-21T01:51:38.1592647Z         "impl": {
2026-06-21T01:51:38.1592747Z           "complete": true,
2026-06-21T01:51:38.1592851Z           "evidence": [
2026-06-21T01:51:38.1592933Z             {
2026-06-21T01:51:38.1593056Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.1593137Z               "line": 773
2026-06-21T01:51:38.1593213Z             },
2026-06-21T01:51:38.1593296Z             {
2026-06-21T01:51:38.1593414Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.1593495Z               "line": 796
2026-06-21T01:51:38.1593577Z             }
2026-06-21T01:51:38.1593662Z           ]
2026-06-21T01:51:38.1593742Z         },
2026-06-21T01:51:38.1593834Z         "int": {
2026-06-21T01:51:38.1593926Z           "complete": true,
2026-06-21T01:51:38.1594019Z           "evidence": [
2026-06-21T01:51:38.1594104Z             {
2026-06-21T01:51:38.1594218Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T01:51:38.1594313Z               "line": 228
2026-06-21T01:51:38.1594393Z             },
2026-06-21T01:51:38.1594483Z             {
2026-06-21T01:51:38.1594598Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T01:51:38.1594698Z               "line": 468
2026-06-21T01:51:38.1594783Z             }
2026-06-21T01:51:38.1594860Z           ]
2026-06-21T01:51:38.1594942Z         },
2026-06-21T01:51:38.1595017Z         "unit": {
2026-06-21T01:51:38.1595107Z           "complete": true,
2026-06-21T01:51:38.1595195Z           "evidence": [
2026-06-21T01:51:38.1595280Z             {
2026-06-21T01:51:38.1595403Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.1595510Z               "line": 1495
2026-06-21T01:51:38.1595785Z             }
2026-06-21T01:51:38.1595853Z           ]
2026-06-21T01:51:38.1595933Z         }
2026-06-21T01:51:38.1596105Z       }
2026-06-21T01:51:38.1596191Z     },
2026-06-21T01:51:38.1596276Z     {
2026-06-21T01:51:38.1596395Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-21T01:51:38.1600037Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-21T01:51:38.1600146Z       "requiredStages": [
2026-06-21T01:51:38.1600222Z         "doc",
2026-06-21T01:51:38.1600304Z         "impl",
2026-06-21T01:51:38.1600381Z         "unit"
2026-06-21T01:51:38.1600452Z       ],
2026-06-21T01:51:38.1600541Z       "stages": {
2026-06-21T01:51:38.1600619Z         "doc": {
2026-06-21T01:51:38.1600714Z           "complete": true,
2026-06-21T01:51:38.1600804Z           "evidence": [
2026-06-21T01:51:38.1600899Z             {
2026-06-21T01:51:38.1601014Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.1601110Z               "line": 395
2026-06-21T01:51:38.1601190Z             }
2026-06-21T01:51:38.1601272Z           ]
2026-06-21T01:51:38.1601362Z         },
2026-06-21T01:51:38.1601444Z         "impl": {
2026-06-21T01:51:38.1601543Z           "complete": true,
2026-06-21T01:51:38.1601635Z           "evidence": [
2026-06-21T01:51:38.1601710Z             {
2026-06-21T01:51:38.1601829Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.1601911Z               "line": 75
2026-06-21T01:51:38.1601992Z             }
2026-06-21T01:51:38.1602077Z           ]
2026-06-21T01:51:38.1602164Z         },
2026-06-21T01:51:38.1602255Z         "int": {
2026-06-21T01:51:38.1602349Z           "complete": false,
2026-06-21T01:51:38.1602434Z           "evidence": []
2026-06-21T01:51:38.1602505Z         },
2026-06-21T01:51:38.1602597Z         "unit": {
2026-06-21T01:51:38.1602678Z           "complete": true,
2026-06-21T01:51:38.1602777Z           "evidence": [
2026-06-21T01:51:38.1602863Z             {
2026-06-21T01:51:38.1602983Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.1603072Z               "line": 632
2026-06-21T01:51:38.1603154Z             }
2026-06-21T01:51:38.1603241Z           ]
2026-06-21T01:51:38.1603331Z         }
2026-06-21T01:51:38.1603416Z       }
2026-06-21T01:51:38.1603507Z     },
2026-06-21T01:51:38.1603583Z     {
2026-06-21T01:51:38.1603706Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-21T01:51:38.1603861Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-21T01:51:38.1603964Z       "requiredStages": [
2026-06-21T01:51:38.1604045Z         "impl",
2026-06-21T01:51:38.1604137Z         "unit"
2026-06-21T01:51:38.1604223Z       ],
2026-06-21T01:51:38.1604302Z       "stages": {
2026-06-21T01:51:38.1604379Z         "doc": {
2026-06-21T01:51:38.1604456Z           "complete": false,
2026-06-21T01:51:38.1604660Z           "evidence": []
2026-06-21T01:51:38.1604745Z         },
2026-06-21T01:51:38.1604841Z         "impl": {
2026-06-21T01:51:38.1605029Z           "complete": true,
2026-06-21T01:51:38.1605120Z           "evidence": [
2026-06-21T01:51:38.1605202Z             {
2026-06-21T01:51:38.1605320Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.1605415Z               "line": 172
2026-06-21T01:51:38.1605492Z             },
2026-06-21T01:51:38.1605577Z             {
2026-06-21T01:51:38.1605691Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:51:38.1605769Z               "line": 18
2026-06-21T01:51:38.1605845Z             },
2026-06-21T01:51:38.1605925Z             {
2026-06-21T01:51:38.1606045Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:51:38.1606122Z               "line": 100
2026-06-21T01:51:38.1606207Z             }
2026-06-21T01:51:38.1606297Z           ]
2026-06-21T01:51:38.1606374Z         },
2026-06-21T01:51:38.1606460Z         "int": {
2026-06-21T01:51:38.1606559Z           "complete": false,
2026-06-21T01:51:38.1606655Z           "evidence": []
2026-06-21T01:51:38.1606747Z         },
2026-06-21T01:51:38.1606836Z         "unit": {
2026-06-21T01:51:38.1606936Z           "complete": true,
2026-06-21T01:51:38.1607019Z           "evidence": [
2026-06-21T01:51:38.1607108Z             {
2026-06-21T01:51:38.1607213Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.1607305Z               "line": 857
2026-06-21T01:51:38.1607386Z             },
2026-06-21T01:51:38.1607465Z             {
2026-06-21T01:51:38.1607569Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:51:38.1607650Z               "line": 161
2026-06-21T01:51:38.1607731Z             },
2026-06-21T01:51:38.1607810Z             {
2026-06-21T01:51:38.1607924Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:51:38.1608011Z               "line": 233
2026-06-21T01:51:38.1608092Z             }
2026-06-21T01:51:38.1608182Z           ]
2026-06-21T01:51:38.1608273Z         }
2026-06-21T01:51:38.1608355Z       }
2026-06-21T01:51:38.1608436Z     },
2026-06-21T01:51:38.1608535Z     {
2026-06-21T01:51:38.1608646Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-21T01:51:38.1609141Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-21T01:51:38.1609246Z       "requiredStages": [
2026-06-21T01:51:38.1609327Z         "impl",
2026-06-21T01:51:38.1609417Z         "unit"
2026-06-21T01:51:38.1609503Z       ],
2026-06-21T01:51:38.1609590Z       "stages": {
2026-06-21T01:51:38.1609666Z         "doc": {
2026-06-21T01:51:38.1609755Z           "complete": true,
2026-06-21T01:51:38.1609847Z           "evidence": [
2026-06-21T01:51:38.1609929Z             {
2026-06-21T01:51:38.1610042Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.1610127Z               "line": 220
2026-06-21T01:51:38.1610217Z             }
2026-06-21T01:51:38.1610307Z           ]
2026-06-21T01:51:38.1610401Z         },
2026-06-21T01:51:38.1610491Z         "impl": {
2026-06-21T01:51:38.1610587Z           "complete": true,
2026-06-21T01:51:38.1610678Z           "evidence": [
2026-06-21T01:51:38.1610763Z             {
2026-06-21T01:51:38.1610902Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.1610998Z               "line": 316
2026-06-21T01:51:38.1611078Z             },
2026-06-21T01:51:38.1611159Z             {
2026-06-21T01:51:38.1611274Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.1611360Z               "line": 356
2026-06-21T01:51:38.1611450Z             },
2026-06-21T01:51:38.1611536Z             {
2026-06-21T01:51:38.1611660Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.1611740Z               "line": 578
2026-06-21T01:51:38.1611833Z             },
2026-06-21T01:51:38.1611913Z             {
2026-06-21T01:51:38.1612027Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T01:51:38.1612242Z               "line": 77
2026-06-21T01:51:38.1612409Z             }
2026-06-21T01:51:38.1612495Z           ]
2026-06-21T01:51:38.1612575Z         },
2026-06-21T01:51:38.1612666Z         "int": {
2026-06-21T01:51:38.1612753Z           "complete": false,
2026-06-21T01:51:38.1612844Z           "evidence": []
2026-06-21T01:51:38.1612928Z         },
2026-06-21T01:51:38.1613013Z         "unit": {
2026-06-21T01:51:38.1613104Z           "complete": true,
2026-06-21T01:51:38.1613190Z           "evidence": [
2026-06-21T01:51:38.1613275Z             {
2026-06-21T01:51:38.1613389Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.1613477Z               "line": 747
2026-06-21T01:51:38.1613558Z             },
2026-06-21T01:51:38.1613642Z             {
2026-06-21T01:51:38.1613762Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.1613843Z               "line": 785
2026-06-21T01:51:38.1613942Z             },
2026-06-21T01:51:38.1614024Z             {
2026-06-21T01:51:38.1614139Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T01:51:38.1614234Z               "line": 166
2026-06-21T01:51:38.1614310Z             }
2026-06-21T01:51:38.1614397Z           ]
2026-06-21T01:51:38.1614477Z         }
2026-06-21T01:51:38.1614558Z       }
2026-06-21T01:51:38.1614639Z     },
2026-06-21T01:51:38.1614726Z     {
2026-06-21T01:51:38.1614843Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-21T01:51:38.1615387Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-21T01:51:38.1615485Z       "requiredStages": [
2026-06-21T01:51:38.1615570Z         "impl",
2026-06-21T01:51:38.1615661Z         "unit"
2026-06-21T01:51:38.1615742Z       ],
2026-06-21T01:51:38.1615823Z       "stages": {
2026-06-21T01:51:38.1615909Z         "doc": {
2026-06-21T01:51:38.1616014Z           "complete": false,
2026-06-21T01:51:38.1616105Z           "evidence": []
2026-06-21T01:51:38.1616194Z         },
2026-06-21T01:51:38.1616286Z         "impl": {
2026-06-21T01:51:38.1616367Z           "complete": true,
2026-06-21T01:51:38.1616467Z           "evidence": [
2026-06-21T01:51:38.1616547Z             {
2026-06-21T01:51:38.1616687Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T01:51:38.1616777Z               "line": 22
2026-06-21T01:51:38.1616857Z             },
2026-06-21T01:51:38.1616944Z             {
2026-06-21T01:51:38.1617058Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:51:38.1617153Z               "line": 487
2026-06-21T01:51:38.1617235Z             },
2026-06-21T01:51:38.1617317Z             {
2026-06-21T01:51:38.1617435Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T01:51:38.1617520Z               "line": 17
2026-06-21T01:51:38.1617613Z             },
2026-06-21T01:51:38.1617696Z             {
2026-06-21T01:51:38.1617821Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T01:51:38.1622182Z               "line": 147
2026-06-21T01:51:38.1622300Z             },
2026-06-21T01:51:38.1622388Z             {
2026-06-21T01:51:38.1622530Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.1622630Z               "line": 226
2026-06-21T01:51:38.1622703Z             },
2026-06-21T01:51:38.1622783Z             {
2026-06-21T01:51:38.1622921Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.1623018Z               "line": 251
2026-06-21T01:51:38.1623107Z             },
2026-06-21T01:51:38.1623183Z             {
2026-06-21T01:51:38.1623313Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.1623399Z               "line": 277
2026-06-21T01:51:38.1623488Z             },
2026-06-21T01:51:38.1623577Z             {
2026-06-21T01:51:38.1623697Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:51:38.1623945Z               "line": 124
2026-06-21T01:51:38.1624027Z             },
2026-06-21T01:51:38.1624207Z             {
2026-06-21T01:51:38.1624322Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:51:38.1624408Z               "line": 224
2026-06-21T01:51:38.1624489Z             }
2026-06-21T01:51:38.1624570Z           ]
2026-06-21T01:51:38.1624656Z         },
2026-06-21T01:51:38.1624741Z         "int": {
2026-06-21T01:51:38.1624841Z           "complete": false,
2026-06-21T01:51:38.1624928Z           "evidence": []
2026-06-21T01:51:38.1625014Z         },
2026-06-21T01:51:38.1625104Z         "unit": {
2026-06-21T01:51:38.1625194Z           "complete": true,
2026-06-21T01:51:38.1625281Z           "evidence": [
2026-06-21T01:51:38.1625367Z             {
2026-06-21T01:51:38.1625494Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T01:51:38.1625577Z               "line": 63
2026-06-21T01:51:38.1625662Z             },
2026-06-21T01:51:38.1625756Z             {
2026-06-21T01:51:38.1625875Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T01:51:38.1625994Z               "line": 73
2026-06-21T01:51:38.1626106Z             },
2026-06-21T01:51:38.1626192Z             {
2026-06-21T01:51:38.1626307Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T01:51:38.1626397Z               "line": 85
2026-06-21T01:51:38.1626488Z             },
2026-06-21T01:51:38.1626569Z             {
2026-06-21T01:51:38.1626693Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T01:51:38.1626783Z               "line": 346
2026-06-21T01:51:38.1626856Z             },
2026-06-21T01:51:38.1626932Z             {
2026-06-21T01:51:38.1627055Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T01:51:38.1627141Z               "line": 281
2026-06-21T01:51:38.1627223Z             },
2026-06-21T01:51:38.1627299Z             {
2026-06-21T01:51:38.1627403Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T01:51:38.1627490Z               "line": 322
2026-06-21T01:51:38.1627576Z             },
2026-06-21T01:51:38.1627666Z             {
2026-06-21T01:51:38.1627780Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T01:51:38.1627867Z               "line": 360
2026-06-21T01:51:38.1627951Z             },
2026-06-21T01:51:38.1628032Z             {
2026-06-21T01:51:38.1628153Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.1628248Z               "line": 688
2026-06-21T01:51:38.1628329Z             },
2026-06-21T01:51:38.1628430Z             {
2026-06-21T01:51:38.1628558Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:51:38.1628657Z               "line": 397
2026-06-21T01:51:38.1628747Z             },
2026-06-21T01:51:38.1628833Z             {
2026-06-21T01:51:38.1629016Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:51:38.1629098Z               "line": 440
2026-06-21T01:51:38.1629189Z             }
2026-06-21T01:51:38.1629274Z           ]
2026-06-21T01:51:38.1629355Z         }
2026-06-21T01:51:38.1629437Z       }
2026-06-21T01:51:38.1629532Z     },
2026-06-21T01:51:38.1629612Z     {
2026-06-21T01:51:38.1629713Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-21T01:51:38.1629931Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-21T01:51:38.1630023Z       "requiredStages": [
2026-06-21T01:51:38.1630110Z         "impl",
2026-06-21T01:51:38.1630189Z         "unit"
2026-06-21T01:51:38.1630285Z       ],
2026-06-21T01:51:38.1630371Z       "stages": {
2026-06-21T01:51:38.1630452Z         "doc": {
2026-06-21T01:51:38.1630557Z           "complete": false,
2026-06-21T01:51:38.1630633Z           "evidence": []
2026-06-21T01:51:38.1630725Z         },
2026-06-21T01:51:38.1630809Z         "impl": {
2026-06-21T01:51:38.1630910Z           "complete": true,
2026-06-21T01:51:38.1630997Z           "evidence": [
2026-06-21T01:51:38.1631078Z             {
2026-06-21T01:51:38.1631309Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T01:51:38.1631395Z               "line": 169
2026-06-21T01:51:38.1631573Z             }
2026-06-21T01:51:38.1631655Z           ]
2026-06-21T01:51:38.1631732Z         },
2026-06-21T01:51:38.1631822Z         "int": {
2026-06-21T01:51:38.1631911Z           "complete": true,
2026-06-21T01:51:38.1631994Z           "evidence": [
2026-06-21T01:51:38.1632080Z             {
2026-06-21T01:51:38.1632189Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T01:51:38.1632270Z               "line": 44
2026-06-21T01:51:38.1632347Z             },
2026-06-21T01:51:38.1632432Z             {
2026-06-21T01:51:38.1632532Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T01:51:38.1632619Z               "line": 66
2026-06-21T01:51:38.1632699Z             }
2026-06-21T01:51:38.1632775Z           ]
2026-06-21T01:51:38.1632847Z         },
2026-06-21T01:51:38.1632938Z         "unit": {
2026-06-21T01:51:38.1633019Z           "complete": true,
2026-06-21T01:51:38.1633104Z           "evidence": [
2026-06-21T01:51:38.1633199Z             {
2026-06-21T01:51:38.1633310Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T01:51:38.1633419Z               "line": 186
2026-06-21T01:51:38.1633500Z             },
2026-06-21T01:51:38.1633587Z             {
2026-06-21T01:51:38.1633700Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T01:51:38.1633786Z               "line": 238
2026-06-21T01:51:38.1633878Z             },
2026-06-21T01:51:38.1633959Z             {
2026-06-21T01:51:38.1634072Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T01:51:38.1634157Z               "line": 266
2026-06-21T01:51:38.1634243Z             }
2026-06-21T01:51:38.1634325Z           ]
2026-06-21T01:51:38.1634410Z         }
2026-06-21T01:51:38.1634491Z       }
2026-06-21T01:51:38.1634572Z     },
2026-06-21T01:51:38.1634658Z     {
2026-06-21T01:51:38.1634776Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-21T01:51:38.1639231Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-21T01:51:38.1639359Z       "requiredStages": [],
2026-06-21T01:51:38.1639454Z       "stages": {
2026-06-21T01:51:38.1639538Z         "doc": {
2026-06-21T01:51:38.1639639Z           "complete": false,
2026-06-21T01:51:38.1639730Z           "evidence": []
2026-06-21T01:51:38.1639811Z         },
2026-06-21T01:51:38.1639896Z         "impl": {
2026-06-21T01:51:38.1639978Z           "complete": false,
2026-06-21T01:51:38.1640063Z           "evidence": []
2026-06-21T01:51:38.1640144Z         },
2026-06-21T01:51:38.1640239Z         "int": {
2026-06-21T01:51:38.1640445Z           "complete": false,
2026-06-21T01:51:38.1640530Z           "evidence": []
2026-06-21T01:51:38.1640617Z         },
2026-06-21T01:51:38.1640793Z         "unit": {
2026-06-21T01:51:38.1640883Z           "complete": false,
2026-06-21T01:51:38.1640970Z           "evidence": []
2026-06-21T01:51:38.1641050Z         }
2026-06-21T01:51:38.1641140Z       }
2026-06-21T01:51:38.1641222Z     },
2026-06-21T01:51:38.1641304Z     {
2026-06-21T01:51:38.1641436Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-21T01:51:38.1655244Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-21T01:51:38.1655669Z       "requiredStages": [
2026-06-21T01:51:38.1655755Z         "doc",
2026-06-21T01:51:38.1655840Z         "impl",
2026-06-21T01:51:38.1655925Z         "unit",
2026-06-21T01:51:38.1656017Z         "int"
2026-06-21T01:51:38.1656098Z       ],
2026-06-21T01:51:38.1656193Z       "stages": {
2026-06-21T01:51:38.1656274Z         "doc": {
2026-06-21T01:51:38.1656369Z           "complete": true,
2026-06-21T01:51:38.1656460Z           "evidence": [
2026-06-21T01:51:38.1656545Z             {
2026-06-21T01:51:38.1656661Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.1656751Z               "line": 468
2026-06-21T01:51:38.1656832Z             }
2026-06-21T01:51:38.1656914Z           ]
2026-06-21T01:51:38.1656999Z         },
2026-06-21T01:51:38.1657089Z         "impl": {
2026-06-21T01:51:38.1657175Z           "complete": true,
2026-06-21T01:51:38.1657267Z           "evidence": [
2026-06-21T01:51:38.1657347Z             {
2026-06-21T01:51:38.1657474Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.1657551Z               "line": 342
2026-06-21T01:51:38.1657636Z             },
2026-06-21T01:51:38.1657716Z             {
2026-06-21T01:51:38.1657829Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.1657916Z               "line": 1188
2026-06-21T01:51:38.1657983Z             },
2026-06-21T01:51:38.1658073Z             {
2026-06-21T01:51:38.1658187Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1658279Z               "line": 715
2026-06-21T01:51:38.1658359Z             }
2026-06-21T01:51:38.1658440Z           ]
2026-06-21T01:51:38.1658526Z         },
2026-06-21T01:51:38.1658613Z         "int": {
2026-06-21T01:51:38.1658707Z           "complete": true,
2026-06-21T01:51:38.1658797Z           "evidence": [
2026-06-21T01:51:38.1658875Z             {
2026-06-21T01:51:38.1659051Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:51:38.1659141Z               "line": 1163
2026-06-21T01:51:38.1659227Z             },
2026-06-21T01:51:38.1659313Z             {
2026-06-21T01:51:38.1659431Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:51:38.1659524Z               "line": 1264
2026-06-21T01:51:38.1659599Z             },
2026-06-21T01:51:38.1659680Z             {
2026-06-21T01:51:38.1659795Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T01:51:38.1659895Z               "line": 1152
2026-06-21T01:51:38.1659980Z             }
2026-06-21T01:51:38.1660066Z           ]
2026-06-21T01:51:38.1660149Z         },
2026-06-21T01:51:38.1660234Z         "unit": {
2026-06-21T01:51:38.1660323Z           "complete": true,
2026-06-21T01:51:38.1660418Z           "evidence": [
2026-06-21T01:51:38.1660499Z             {
2026-06-21T01:51:38.1660720Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1660811Z               "line": 2624
2026-06-21T01:51:38.1660983Z             }
2026-06-21T01:51:38.1661068Z           ]
2026-06-21T01:51:38.1661151Z         }
2026-06-21T01:51:38.1661237Z       }
2026-06-21T01:51:38.1661316Z     },
2026-06-21T01:51:38.1661398Z     {
2026-06-21T01:51:38.1661518Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-21T01:51:38.1661927Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-21T01:51:38.1662032Z       "requiredStages": [
2026-06-21T01:51:38.1662114Z         "impl",
2026-06-21T01:51:38.1662203Z         "unit",
2026-06-21T01:51:38.1662284Z         "int"
2026-06-21T01:51:38.1662357Z       ],
2026-06-21T01:51:38.1662443Z       "stages": {
2026-06-21T01:51:38.1662532Z         "doc": {
2026-06-21T01:51:38.1662618Z           "complete": false,
2026-06-21T01:51:38.1662720Z           "evidence": []
2026-06-21T01:51:38.1662805Z         },
2026-06-21T01:51:38.1662894Z         "impl": {
2026-06-21T01:51:38.1662974Z           "complete": true,
2026-06-21T01:51:38.1663066Z           "evidence": [
2026-06-21T01:51:38.1663141Z             {
2026-06-21T01:51:38.1663263Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1663345Z               "line": 178
2026-06-21T01:51:38.1663426Z             },
2026-06-21T01:51:38.1663521Z             {
2026-06-21T01:51:38.1663631Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1663727Z               "line": 226
2026-06-21T01:51:38.1663813Z             },
2026-06-21T01:51:38.1663888Z             {
2026-06-21T01:51:38.1664013Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:51:38.1664093Z               "line": 79
2026-06-21T01:51:38.1664179Z             },
2026-06-21T01:51:38.1664265Z             {
2026-06-21T01:51:38.1664371Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T01:51:38.1664461Z               "line": 52
2026-06-21T01:51:38.1664551Z             },
2026-06-21T01:51:38.1664648Z             {
2026-06-21T01:51:38.1664751Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.1664837Z               "line": 263
2026-06-21T01:51:38.1664929Z             },
2026-06-21T01:51:38.1665015Z             {
2026-06-21T01:51:38.1665119Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T01:51:38.1665214Z               "line": 27
2026-06-21T01:51:38.1665306Z             },
2026-06-21T01:51:38.1665381Z             {
2026-06-21T01:51:38.1665495Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T01:51:38.1665587Z               "line": 79
2026-06-21T01:51:38.1665668Z             },
2026-06-21T01:51:38.1665752Z             {
2026-06-21T01:51:38.1665861Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T01:51:38.1665948Z               "line": 102
2026-06-21T01:51:38.1666038Z             },
2026-06-21T01:51:38.1666123Z             {
2026-06-21T01:51:38.1666243Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:51:38.1666344Z               "line": 116
2026-06-21T01:51:38.1666424Z             }
2026-06-21T01:51:38.1666515Z           ]
2026-06-21T01:51:38.1666596Z         },
2026-06-21T01:51:38.1666677Z         "int": {
2026-06-21T01:51:38.1666772Z           "complete": true,
2026-06-21T01:51:38.1666858Z           "evidence": [
2026-06-21T01:51:38.1666939Z             {
2026-06-21T01:51:38.1667062Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T01:51:38.1667154Z               "line": 43
2026-06-21T01:51:38.1667236Z             }
2026-06-21T01:51:38.1667316Z           ]
2026-06-21T01:51:38.1667392Z         },
2026-06-21T01:51:38.1667479Z         "unit": {
2026-06-21T01:51:38.1667564Z           "complete": true,
2026-06-21T01:51:38.1667654Z           "evidence": [
2026-06-21T01:51:38.1667745Z             {
2026-06-21T01:51:38.1667949Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1668039Z               "line": 678
2026-06-21T01:51:38.1668187Z             },
2026-06-21T01:51:38.1668271Z             {
2026-06-21T01:51:38.1668384Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.1668476Z               "line": 495
2026-06-21T01:51:38.1668553Z             },
2026-06-21T01:51:38.1668643Z             {
2026-06-21T01:51:38.1668752Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T01:51:38.1668834Z               "line": 124
2026-06-21T01:51:38.1668924Z             },
2026-06-21T01:51:38.1669116Z             {
2026-06-21T01:51:38.1669220Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T01:51:38.1669310Z               "line": 143
2026-06-21T01:51:38.1669396Z             },
2026-06-21T01:51:38.1669468Z             {
2026-06-21T01:51:38.1669582Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T01:51:38.1669663Z               "line": 160
2026-06-21T01:51:38.1669755Z             },
2026-06-21T01:51:38.1669839Z             {
2026-06-21T01:51:38.1669949Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T01:51:38.1670040Z               "line": 187
2026-06-21T01:51:38.1670112Z             },
2026-06-21T01:51:38.1670197Z             {
2026-06-21T01:51:38.1670311Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T01:51:38.1670394Z               "line": 206
2026-06-21T01:51:38.1670479Z             },
2026-06-21T01:51:38.1670564Z             {
2026-06-21T01:51:38.1670684Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:51:38.1670766Z               "line": 229
2026-06-21T01:51:38.1670860Z             }
2026-06-21T01:51:38.1670939Z           ]
2026-06-21T01:51:38.1671026Z         }
2026-06-21T01:51:38.1671111Z       }
2026-06-21T01:51:38.1671191Z     },
2026-06-21T01:51:38.1671285Z     {
2026-06-21T01:51:38.1671401Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-21T01:51:38.1672035Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-21T01:51:38.1672144Z       "requiredStages": [
2026-06-21T01:51:38.1672229Z         "impl",
2026-06-21T01:51:38.1672321Z         "unit"
2026-06-21T01:51:38.1672406Z       ],
2026-06-21T01:51:38.1672492Z       "stages": {
2026-06-21T01:51:38.1672578Z         "doc": {
2026-06-21T01:51:38.1672665Z           "complete": false,
2026-06-21T01:51:38.1672754Z           "evidence": []
2026-06-21T01:51:38.1672840Z         },
2026-06-21T01:51:38.1672922Z         "impl": {
2026-06-21T01:51:38.1673018Z           "complete": true,
2026-06-21T01:51:38.1673102Z           "evidence": [
2026-06-21T01:51:38.1673188Z             {
2026-06-21T01:51:38.1673309Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1673403Z               "line": 1174
2026-06-21T01:51:38.1673492Z             },
2026-06-21T01:51:38.1673573Z             {
2026-06-21T01:51:38.1673710Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1673790Z               "line": 1400
2026-06-21T01:51:38.1673891Z             }
2026-06-21T01:51:38.1673977Z           ]
2026-06-21T01:51:38.1674058Z         },
2026-06-21T01:51:38.1674143Z         "int": {
2026-06-21T01:51:38.1674230Z           "complete": false,
2026-06-21T01:51:38.1674320Z           "evidence": []
2026-06-21T01:51:38.1674396Z         },
2026-06-21T01:51:38.1674477Z         "unit": {
2026-06-21T01:51:38.1674559Z           "complete": true,
2026-06-21T01:51:38.1674649Z           "evidence": [
2026-06-21T01:51:38.1674734Z             {
2026-06-21T01:51:38.1674850Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T01:51:38.1674940Z               "line": 161
2026-06-21T01:51:38.1675021Z             }
2026-06-21T01:51:38.1675106Z           ]
2026-06-21T01:51:38.1675297Z         }
2026-06-21T01:51:38.1675383Z       }
2026-06-21T01:51:38.1675464Z     },
2026-06-21T01:51:38.1675541Z     {
2026-06-21T01:51:38.1675774Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-21T01:51:38.1677513Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-21T01:51:38.1677613Z       "requiredStages": [
2026-06-21T01:51:38.1677704Z         "impl",
2026-06-21T01:51:38.1677782Z         "unit"
2026-06-21T01:51:38.1677861Z       ],
2026-06-21T01:51:38.1677957Z       "stages": {
2026-06-21T01:51:38.1678048Z         "doc": {
2026-06-21T01:51:38.1678143Z           "complete": false,
2026-06-21T01:51:38.1678243Z           "evidence": []
2026-06-21T01:51:38.1678333Z         },
2026-06-21T01:51:38.1678416Z         "impl": {
2026-06-21T01:51:38.1678514Z           "complete": true,
2026-06-21T01:51:38.1678600Z           "evidence": [
2026-06-21T01:51:38.1678690Z             {
2026-06-21T01:51:38.1678817Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T01:51:38.1678898Z               "line": 257
2026-06-21T01:51:38.1679070Z             }
2026-06-21T01:51:38.1679151Z           ]
2026-06-21T01:51:38.1679236Z         },
2026-06-21T01:51:38.1679317Z         "int": {
2026-06-21T01:51:38.1679418Z           "complete": false,
2026-06-21T01:51:38.1679508Z           "evidence": []
2026-06-21T01:51:38.1679593Z         },
2026-06-21T01:51:38.1679686Z         "unit": {
2026-06-21T01:51:38.1679771Z           "complete": true,
2026-06-21T01:51:38.1679860Z           "evidence": [
2026-06-21T01:51:38.1679947Z             {
2026-06-21T01:51:38.1680071Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T01:51:38.1680161Z               "line": 360
2026-06-21T01:51:38.1680247Z             }
2026-06-21T01:51:38.1680334Z           ]
2026-06-21T01:51:38.1680419Z         }
2026-06-21T01:51:38.1680504Z       }
2026-06-21T01:51:38.1680581Z     },
2026-06-21T01:51:38.1680668Z     {
2026-06-21T01:51:38.1680781Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-21T01:51:38.1682567Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-21T01:51:38.1682690Z       "requiredStages": [
2026-06-21T01:51:38.1682780Z         "impl",
2026-06-21T01:51:38.1682862Z         "unit"
2026-06-21T01:51:38.1682948Z       ],
2026-06-21T01:51:38.1683033Z       "stages": {
2026-06-21T01:51:38.1683128Z         "doc": {
2026-06-21T01:51:38.1683215Z           "complete": false,
2026-06-21T01:51:38.1683310Z           "evidence": []
2026-06-21T01:51:38.1683400Z         },
2026-06-21T01:51:38.1683477Z         "impl": {
2026-06-21T01:51:38.1683582Z           "complete": true,
2026-06-21T01:51:38.1683671Z           "evidence": [
2026-06-21T01:51:38.1683763Z             {
2026-06-21T01:51:38.1683892Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1683996Z               "line": 1018
2026-06-21T01:51:38.1684081Z             },
2026-06-21T01:51:38.1684162Z             {
2026-06-21T01:51:38.1684417Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1684508Z               "line": 283
2026-06-21T01:51:38.1684693Z             },
2026-06-21T01:51:38.1684785Z             {
2026-06-21T01:51:38.1684919Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1685017Z               "line": 316
2026-06-21T01:51:38.1685100Z             },
2026-06-21T01:51:38.1685190Z             {
2026-06-21T01:51:38.1685309Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T01:51:38.1685400Z               "line": 26
2026-06-21T01:51:38.1685472Z             }
2026-06-21T01:51:38.1685557Z           ]
2026-06-21T01:51:38.1685638Z         },
2026-06-21T01:51:38.1685714Z         "int": {
2026-06-21T01:51:38.1685820Z           "complete": false,
2026-06-21T01:51:38.1685905Z           "evidence": []
2026-06-21T01:51:38.1685991Z         },
2026-06-21T01:51:38.1686078Z         "unit": {
2026-06-21T01:51:38.1686172Z           "complete": true,
2026-06-21T01:51:38.1686277Z           "evidence": [
2026-06-21T01:51:38.1686359Z             {
2026-06-21T01:51:38.1686473Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T01:51:38.1686568Z               "line": 271
2026-06-21T01:51:38.1686659Z             },
2026-06-21T01:51:38.1686741Z             {
2026-06-21T01:51:38.1686858Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T01:51:38.1686953Z               "line": 348
2026-06-21T01:51:38.1687034Z             }
2026-06-21T01:51:38.1687131Z           ]
2026-06-21T01:51:38.1687215Z         }
2026-06-21T01:51:38.1687305Z       }
2026-06-21T01:51:38.1687388Z     },
2026-06-21T01:51:38.1687479Z     {
2026-06-21T01:51:38.1687587Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-21T01:51:38.1687768Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-21T01:51:38.1687863Z       "requiredStages": [
2026-06-21T01:51:38.1687950Z         "impl",
2026-06-21T01:51:38.1688036Z         "unit"
2026-06-21T01:51:38.1688116Z       ],
2026-06-21T01:51:38.1688211Z       "stages": {
2026-06-21T01:51:38.1688294Z         "doc": {
2026-06-21T01:51:38.1688389Z           "complete": false,
2026-06-21T01:51:38.1688484Z           "evidence": []
2026-06-21T01:51:38.1688555Z         },
2026-06-21T01:51:38.1688647Z         "impl": {
2026-06-21T01:51:38.1688741Z           "complete": true,
2026-06-21T01:51:38.1688836Z           "evidence": [
2026-06-21T01:51:38.1688918Z             {
2026-06-21T01:51:38.1689131Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:51:38.1689236Z               "line": 40
2026-06-21T01:51:38.1689312Z             },
2026-06-21T01:51:38.1689401Z             {
2026-06-21T01:51:38.1689510Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:51:38.1689601Z               "line": 103
2026-06-21T01:51:38.1689697Z             },
2026-06-21T01:51:38.1689777Z             {
2026-06-21T01:51:38.1689882Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:51:38.1689978Z               "line": 218
2026-06-21T01:51:38.1690073Z             },
2026-06-21T01:51:38.1690163Z             {
2026-06-21T01:51:38.1690279Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:51:38.1690364Z               "line": 323
2026-06-21T01:51:38.1690440Z             }
2026-06-21T01:51:38.1690526Z           ]
2026-06-21T01:51:38.1690612Z         },
2026-06-21T01:51:38.1690698Z         "int": {
2026-06-21T01:51:38.1690797Z           "complete": false,
2026-06-21T01:51:38.1690884Z           "evidence": []
2026-06-21T01:51:38.1690974Z         },
2026-06-21T01:51:38.1691055Z         "unit": {
2026-06-21T01:51:38.1691156Z           "complete": true,
2026-06-21T01:51:38.1691242Z           "evidence": [
2026-06-21T01:51:38.1691331Z             {
2026-06-21T01:51:38.1691446Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:51:38.1691543Z               "line": 361
2026-06-21T01:51:38.1691631Z             },
2026-06-21T01:51:38.1691713Z             {
2026-06-21T01:51:38.1691989Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:51:38.1692083Z               "line": 433
2026-06-21T01:51:38.1692277Z             },
2026-06-21T01:51:38.1692368Z             {
2026-06-21T01:51:38.1692473Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:51:38.1692569Z               "line": 496
2026-06-21T01:51:38.1692649Z             },
2026-06-21T01:51:38.1692739Z             {
2026-06-21T01:51:38.1692850Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:51:38.1692931Z               "line": 517
2026-06-21T01:51:38.1693011Z             }
2026-06-21T01:51:38.1693093Z           ]
2026-06-21T01:51:38.1693183Z         }
2026-06-21T01:51:38.1693260Z       }
2026-06-21T01:51:38.1693350Z     },
2026-06-21T01:51:38.1693427Z     {
2026-06-21T01:51:38.1693546Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-21T01:51:38.1695836Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-21T01:51:38.1695950Z       "requiredStages": [
2026-06-21T01:51:38.1696041Z         "impl",
2026-06-21T01:51:38.1696131Z         "unit"
2026-06-21T01:51:38.1696212Z       ],
2026-06-21T01:51:38.1696304Z       "stages": {
2026-06-21T01:51:38.1696389Z         "doc": {
2026-06-21T01:51:38.1696489Z           "complete": false,
2026-06-21T01:51:38.1696585Z           "evidence": []
2026-06-21T01:51:38.1696676Z         },
2026-06-21T01:51:38.1696761Z         "impl": {
2026-06-21T01:51:38.1696856Z           "complete": true,
2026-06-21T01:51:38.1696958Z           "evidence": [
2026-06-21T01:51:38.1697042Z             {
2026-06-21T01:51:38.1697171Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.1697258Z               "line": 402
2026-06-21T01:51:38.1697343Z             },
2026-06-21T01:51:38.1697437Z             {
2026-06-21T01:51:38.1697541Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.1697638Z               "line": 446
2026-06-21T01:51:38.1697719Z             }
2026-06-21T01:51:38.1697808Z           ]
2026-06-21T01:51:38.1697890Z         },
2026-06-21T01:51:38.1697977Z         "int": {
2026-06-21T01:51:38.1698076Z           "complete": false,
2026-06-21T01:51:38.1698171Z           "evidence": []
2026-06-21T01:51:38.1698258Z         },
2026-06-21T01:51:38.1698333Z         "unit": {
2026-06-21T01:51:38.1698428Z           "complete": true,
2026-06-21T01:51:38.1698514Z           "evidence": [
2026-06-21T01:51:38.1698606Z             {
2026-06-21T01:51:38.1698734Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.1698824Z               "line": 910
2026-06-21T01:51:38.1698911Z             }
2026-06-21T01:51:38.1699077Z           ]
2026-06-21T01:51:38.1699169Z         }
2026-06-21T01:51:38.1699240Z       }
2026-06-21T01:51:38.1699324Z     },
2026-06-21T01:51:38.1699410Z     {
2026-06-21T01:51:38.1699531Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-21T01:51:38.1699663Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-21T01:51:38.1699758Z       "requiredStages": [
2026-06-21T01:51:38.1699844Z         "impl",
2026-06-21T01:51:38.1699929Z         "unit"
2026-06-21T01:51:38.1700013Z       ],
2026-06-21T01:51:38.1700103Z       "stages": {
2026-06-21T01:51:38.1700190Z         "doc": {
2026-06-21T01:51:38.1700281Z           "complete": false,
2026-06-21T01:51:38.1700480Z           "evidence": []
2026-06-21T01:51:38.1700566Z         },
2026-06-21T01:51:38.1700733Z         "impl": {
2026-06-21T01:51:38.1700830Z           "complete": true,
2026-06-21T01:51:38.1700925Z           "evidence": [
2026-06-21T01:51:38.1701004Z             {
2026-06-21T01:51:38.1701111Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:51:38.1701196Z               "line": 116
2026-06-21T01:51:38.1701286Z             },
2026-06-21T01:51:38.1701353Z             {
2026-06-21T01:51:38.1701478Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:51:38.1701568Z               "line": 211
2026-06-21T01:51:38.1701644Z             }
2026-06-21T01:51:38.1701731Z           ]
2026-06-21T01:51:38.1701807Z         },
2026-06-21T01:51:38.1701901Z         "int": {
2026-06-21T01:51:38.1701992Z           "complete": false,
2026-06-21T01:51:38.1702089Z           "evidence": []
2026-06-21T01:51:38.1702168Z         },
2026-06-21T01:51:38.1702249Z         "unit": {
2026-06-21T01:51:38.1702346Z           "complete": true,
2026-06-21T01:51:38.1702427Z           "evidence": [
2026-06-21T01:51:38.1702525Z             {
2026-06-21T01:51:38.1702625Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:51:38.1702720Z               "line": 388
2026-06-21T01:51:38.1702810Z             },
2026-06-21T01:51:38.1702890Z             {
2026-06-21T01:51:38.1702995Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:51:38.1703081Z               "line": 469
2026-06-21T01:51:38.1703176Z             }
2026-06-21T01:51:38.1703262Z           ]
2026-06-21T01:51:38.1703329Z         }
2026-06-21T01:51:38.1703420Z       }
2026-06-21T01:51:38.1703500Z     },
2026-06-21T01:51:38.1703586Z     {
2026-06-21T01:51:38.1703702Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-21T01:51:38.1704768Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-21T01:51:38.1704883Z       "requiredStages": [
2026-06-21T01:51:38.1704970Z         "impl",
2026-06-21T01:51:38.1705055Z         "unit"
2026-06-21T01:51:38.1705130Z       ],
2026-06-21T01:51:38.1705215Z       "stages": {
2026-06-21T01:51:38.1705292Z         "doc": {
2026-06-21T01:51:38.1705381Z           "complete": true,
2026-06-21T01:51:38.1705475Z           "evidence": [
2026-06-21T01:51:38.1705557Z             {
2026-06-21T01:51:38.1705667Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.1705752Z               "line": 206
2026-06-21T01:51:38.1705842Z             }
2026-06-21T01:51:38.1705925Z           ]
2026-06-21T01:51:38.1706005Z         },
2026-06-21T01:51:38.1706100Z         "impl": {
2026-06-21T01:51:38.1706186Z           "complete": true,
2026-06-21T01:51:38.1706286Z           "evidence": [
2026-06-21T01:51:38.1706372Z             {
2026-06-21T01:51:38.1706491Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1706587Z               "line": 691
2026-06-21T01:51:38.1706673Z             },
2026-06-21T01:51:38.1706763Z             {
2026-06-21T01:51:38.1706874Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1706964Z               "line": 791
2026-06-21T01:51:38.1707049Z             },
2026-06-21T01:51:38.1707145Z             {
2026-06-21T01:51:38.1707255Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1707354Z               "line": 1120
2026-06-21T01:51:38.1707445Z             },
2026-06-21T01:51:38.1707527Z             {
2026-06-21T01:51:38.1707645Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.1707722Z               "line": 184
2026-06-21T01:51:38.1707808Z             }
2026-06-21T01:51:38.1707894Z           ]
2026-06-21T01:51:38.1708054Z         },
2026-06-21T01:51:38.1708145Z         "int": {
2026-06-21T01:51:38.1708231Z           "complete": false,
2026-06-21T01:51:38.1708450Z           "evidence": []
2026-06-21T01:51:38.1708532Z         },
2026-06-21T01:51:38.1708627Z         "unit": {
2026-06-21T01:51:38.1708716Z           "complete": true,
2026-06-21T01:51:38.1708803Z           "evidence": [
2026-06-21T01:51:38.1708894Z             {
2026-06-21T01:51:38.1709104Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1709204Z               "line": 1169
2026-06-21T01:51:38.1709289Z             },
2026-06-21T01:51:38.1709380Z             {
2026-06-21T01:51:38.1709514Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T01:51:38.1709604Z               "line": 44
2026-06-21T01:51:38.1709690Z             },
2026-06-21T01:51:38.1709772Z             {
2026-06-21T01:51:38.1709894Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T01:51:38.1709985Z               "line": 52
2026-06-21T01:51:38.1710082Z             },
2026-06-21T01:51:38.1714489Z             {
2026-06-21T01:51:38.1714656Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T01:51:38.1714756Z               "line": 57
2026-06-21T01:51:38.1714843Z             },
2026-06-21T01:51:38.1714934Z             {
2026-06-21T01:51:38.1715080Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T01:51:38.1715177Z               "line": 54
2026-06-21T01:51:38.1715267Z             }
2026-06-21T01:51:38.1715347Z           ]
2026-06-21T01:51:38.1715438Z         }
2026-06-21T01:51:38.1715521Z       }
2026-06-21T01:51:38.1715605Z     },
2026-06-21T01:51:38.1715690Z     {
2026-06-21T01:51:38.1715818Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-21T01:51:38.1716036Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-21T01:51:38.1716131Z       "requiredStages": [
2026-06-21T01:51:38.1716222Z         "impl",
2026-06-21T01:51:38.1716307Z         "unit"
2026-06-21T01:51:38.1716407Z       ],
2026-06-21T01:51:38.1716494Z       "stages": {
2026-06-21T01:51:38.1716585Z         "doc": {
2026-06-21T01:51:38.1716679Z           "complete": false,
2026-06-21T01:51:38.1716770Z           "evidence": []
2026-06-21T01:51:38.1716851Z         },
2026-06-21T01:51:38.1716928Z         "impl": {
2026-06-21T01:51:38.1717027Z           "complete": true,
2026-06-21T01:51:38.1717114Z           "evidence": [
2026-06-21T01:51:38.1717190Z             {
2026-06-21T01:51:38.1717318Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T01:51:38.1717405Z               "line": 26
2026-06-21T01:51:38.1717495Z             },
2026-06-21T01:51:38.1717581Z             {
2026-06-21T01:51:38.1717700Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T01:51:38.1717787Z               "line": 135
2026-06-21T01:51:38.1717876Z             },
2026-06-21T01:51:38.1717962Z             {
2026-06-21T01:51:38.1718088Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T01:51:38.1718190Z               "line": 26
2026-06-21T01:51:38.1718263Z             },
2026-06-21T01:51:38.1718350Z             {
2026-06-21T01:51:38.1718468Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T01:51:38.1718562Z               "line": 237
2026-06-21T01:51:38.1718652Z             }
2026-06-21T01:51:38.1718734Z           ]
2026-06-21T01:51:38.1718825Z         },
2026-06-21T01:51:38.1718900Z         "int": {
2026-06-21T01:51:38.1719097Z           "complete": false,
2026-06-21T01:51:38.1719187Z           "evidence": []
2026-06-21T01:51:38.1719276Z         },
2026-06-21T01:51:38.1719369Z         "unit": {
2026-06-21T01:51:38.1719459Z           "complete": true,
2026-06-21T01:51:38.1719544Z           "evidence": [
2026-06-21T01:51:38.1719621Z             {
2026-06-21T01:51:38.1719735Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T01:51:38.1719826Z               "line": 161
2026-06-21T01:51:38.1719906Z             },
2026-06-21T01:51:38.1720188Z             {
2026-06-21T01:51:38.1720309Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T01:51:38.1720507Z               "line": 170
2026-06-21T01:51:38.1720589Z             },
2026-06-21T01:51:38.1720680Z             {
2026-06-21T01:51:38.1720788Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T01:51:38.1720878Z               "line": 179
2026-06-21T01:51:38.1720964Z             },
2026-06-21T01:51:38.1721049Z             {
2026-06-21T01:51:38.1721157Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T01:51:38.1721243Z               "line": 190
2026-06-21T01:51:38.1721330Z             },
2026-06-21T01:51:38.1721415Z             {
2026-06-21T01:51:38.1721529Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T01:51:38.1721625Z               "line": 199
2026-06-21T01:51:38.1721706Z             },
2026-06-21T01:51:38.1721800Z             {
2026-06-21T01:51:38.1721902Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T01:51:38.1722006Z               "line": 216
2026-06-21T01:51:38.1722087Z             },
2026-06-21T01:51:38.1722182Z             {
2026-06-21T01:51:38.1722312Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T01:51:38.1722392Z               "line": 242
2026-06-21T01:51:38.1722483Z             },
2026-06-21T01:51:38.1722564Z             {
2026-06-21T01:51:38.1722678Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:51:38.1722768Z               "line": 295
2026-06-21T01:51:38.1722851Z             },
2026-06-21T01:51:38.1722937Z             {
2026-06-21T01:51:38.1723041Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T01:51:38.1723136Z               "line": 244
2026-06-21T01:51:38.1723223Z             },
2026-06-21T01:51:38.1723312Z             {
2026-06-21T01:51:38.1723451Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T01:51:38.1723543Z               "line": 265
2026-06-21T01:51:38.1723632Z             },
2026-06-21T01:51:38.1723717Z             {
2026-06-21T01:51:38.1723845Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T01:51:38.1723935Z               "line": 293
2026-06-21T01:51:38.1724029Z             },
2026-06-21T01:51:38.1724125Z             {
2026-06-21T01:51:38.1724239Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T01:51:38.1724329Z               "line": 317
2026-06-21T01:51:38.1724410Z             },
2026-06-21T01:51:38.1724493Z             {
2026-06-21T01:51:38.1724612Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T01:51:38.1724701Z               "line": 327
2026-06-21T01:51:38.1724788Z             },
2026-06-21T01:51:38.1724869Z             {
2026-06-21T01:51:38.1725001Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:51:38.1725083Z               "line": 540
2026-06-21T01:51:38.1725170Z             }
2026-06-21T01:51:38.1725250Z           ]
2026-06-21T01:51:38.1725340Z         }
2026-06-21T01:51:38.1725427Z       }
2026-06-21T01:51:38.1725522Z     },
2026-06-21T01:51:38.1725603Z     {
2026-06-21T01:51:38.1725733Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-21T01:51:38.1730729Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-21T01:51:38.1731101Z       "requiredStages": [],
2026-06-21T01:51:38.1731193Z       "stages": {
2026-06-21T01:51:38.1731278Z         "doc": {
2026-06-21T01:51:38.1731367Z           "complete": false,
2026-06-21T01:51:38.1731462Z           "evidence": []
2026-06-21T01:51:38.1731552Z         },
2026-06-21T01:51:38.1731642Z         "impl": {
2026-06-21T01:51:38.1731745Z           "complete": false,
2026-06-21T01:51:38.1731847Z           "evidence": []
2026-06-21T01:51:38.1731928Z         },
2026-06-21T01:51:38.1732013Z         "int": {
2026-06-21T01:51:38.1732108Z           "complete": false,
2026-06-21T01:51:38.1732205Z           "evidence": []
2026-06-21T01:51:38.1732285Z         },
2026-06-21T01:51:38.1732375Z         "unit": {
2026-06-21T01:51:38.1732467Z           "complete": false,
2026-06-21T01:51:38.1732557Z           "evidence": []
2026-06-21T01:51:38.1732642Z         }
2026-06-21T01:51:38.1732728Z       }
2026-06-21T01:51:38.1732805Z     },
2026-06-21T01:51:38.1732886Z     {
2026-06-21T01:51:38.1733004Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-21T01:51:38.1734561Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-21T01:51:38.1734680Z       "requiredStages": [
2026-06-21T01:51:38.1734767Z         "impl",
2026-06-21T01:51:38.1734843Z         "unit",
2026-06-21T01:51:38.1734918Z         "int"
2026-06-21T01:51:38.1735009Z       ],
2026-06-21T01:51:38.1735091Z       "stages": {
2026-06-21T01:51:38.1735176Z         "doc": {
2026-06-21T01:51:38.1735275Z           "complete": false,
2026-06-21T01:51:38.1735362Z           "evidence": []
2026-06-21T01:51:38.1735448Z         },
2026-06-21T01:51:38.1735529Z         "impl": {
2026-06-21T01:51:38.1735629Z           "complete": true,
2026-06-21T01:51:38.1735711Z           "evidence": [
2026-06-21T01:51:38.1735800Z             {
2026-06-21T01:51:38.1735934Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1736030Z               "line": 538
2026-06-21T01:51:38.1736133Z             },
2026-06-21T01:51:38.1736210Z             {
2026-06-21T01:51:38.1736326Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:51:38.1736411Z               "line": 625
2026-06-21T01:51:38.1736501Z             },
2026-06-21T01:51:38.1736588Z             {
2026-06-21T01:51:38.1736740Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T01:51:38.1736834Z               "line": 21
2026-06-21T01:51:38.1736920Z             }
2026-06-21T01:51:38.1737011Z           ]
2026-06-21T01:51:38.1737094Z         },
2026-06-21T01:51:38.1737194Z         "int": {
2026-06-21T01:51:38.1737294Z           "complete": true,
2026-06-21T01:51:38.1737386Z           "evidence": [
2026-06-21T01:51:38.1737480Z             {
2026-06-21T01:51:38.1737620Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T01:51:38.1737818Z               "line": 236
2026-06-21T01:51:38.1737995Z             },
2026-06-21T01:51:38.1738090Z             {
2026-06-21T01:51:38.1738239Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T01:51:38.1738329Z               "line": 396
2026-06-21T01:51:38.1738414Z             },
2026-06-21T01:51:38.1738486Z             {
2026-06-21T01:51:38.1738644Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T01:51:38.1738734Z               "line": 1441
2026-06-21T01:51:38.1738825Z             },
2026-06-21T01:51:38.1738922Z             {
2026-06-21T01:51:38.1739155Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T01:51:38.1739250Z               "line": 1593
2026-06-21T01:51:38.1739330Z             }
2026-06-21T01:51:38.1739421Z           ]
2026-06-21T01:51:38.1739498Z         },
2026-06-21T01:51:38.1739598Z         "unit": {
2026-06-21T01:51:38.1739706Z           "complete": true,
2026-06-21T01:51:38.1739792Z           "evidence": [
2026-06-21T01:51:38.1739878Z             {
2026-06-21T01:51:38.1740011Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1740106Z               "line": 887
2026-06-21T01:51:38.1740193Z             }
2026-06-21T01:51:38.1740274Z           ]
2026-06-21T01:51:38.1740369Z         }
2026-06-21T01:51:38.1740441Z       }
2026-06-21T01:51:38.1740527Z     },
2026-06-21T01:51:38.1740608Z     {
2026-06-21T01:51:38.1740731Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-21T01:51:38.1740870Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-21T01:51:38.1740969Z       "requiredStages": [
2026-06-21T01:51:38.1741060Z         "impl",
2026-06-21T01:51:38.1741142Z         "unit"
2026-06-21T01:51:38.1741227Z       ],
2026-06-21T01:51:38.1741308Z       "stages": {
2026-06-21T01:51:38.1741390Z         "doc": {
2026-06-21T01:51:38.1741481Z           "complete": false,
2026-06-21T01:51:38.1741589Z           "evidence": []
2026-06-21T01:51:38.1741675Z         },
2026-06-21T01:51:38.1741763Z         "impl": {
2026-06-21T01:51:38.1741870Z           "complete": true,
2026-06-21T01:51:38.1741946Z           "evidence": [
2026-06-21T01:51:38.1742032Z             {
2026-06-21T01:51:38.1742150Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T01:51:38.1742244Z               "line": 25
2026-06-21T01:51:38.1742329Z             },
2026-06-21T01:51:38.1742412Z             {
2026-06-21T01:51:38.1742530Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:51:38.1742615Z               "line": 26
2026-06-21T01:51:38.1742702Z             },
2026-06-21T01:51:38.1742789Z             {
2026-06-21T01:51:38.1742897Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:51:38.1742993Z               "line": 159
2026-06-21T01:51:38.1743065Z             }
2026-06-21T01:51:38.1743155Z           ]
2026-06-21T01:51:38.1743231Z         },
2026-06-21T01:51:38.1743327Z         "int": {
2026-06-21T01:51:38.1743408Z           "complete": false,
2026-06-21T01:51:38.1743498Z           "evidence": []
2026-06-21T01:51:38.1743583Z         },
2026-06-21T01:51:38.1743671Z         "unit": {
2026-06-21T01:51:38.1743770Z           "complete": true,
2026-06-21T01:51:38.1743861Z           "evidence": [
2026-06-21T01:51:38.1743956Z             {
2026-06-21T01:51:38.1744066Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T01:51:38.1744166Z               "line": 188
2026-06-21T01:51:38.1744252Z             },
2026-06-21T01:51:38.1744324Z             {
2026-06-21T01:51:38.1744432Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T01:51:38.1744528Z               "line": 240
2026-06-21T01:51:38.1744625Z             },
2026-06-21T01:51:38.1744710Z             {
2026-06-21T01:51:38.1744822Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:51:38.1744918Z               "line": 186
2026-06-21T01:51:38.1745008Z             }
2026-06-21T01:51:38.1745250Z           ]
2026-06-21T01:51:38.1745336Z         }
2026-06-21T01:51:38.1745431Z       }
2026-06-21T01:51:38.1745516Z     },
2026-06-21T01:51:38.1745684Z     {
2026-06-21T01:51:38.1745793Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-21T01:51:38.1745951Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-21T01:51:38.1746056Z       "requiredStages": [
2026-06-21T01:51:38.1746140Z         "impl",
2026-06-21T01:51:38.1746242Z         "unit"
2026-06-21T01:51:38.1746332Z       ],
2026-06-21T01:51:38.1746418Z       "stages": {
2026-06-21T01:51:38.1746508Z         "doc": {
2026-06-21T01:51:38.1746600Z           "complete": false,
2026-06-21T01:51:38.1746708Z           "evidence": []
2026-06-21T01:51:38.1746790Z         },
2026-06-21T01:51:38.1746886Z         "impl": {
2026-06-21T01:51:38.1746985Z           "complete": true,
2026-06-21T01:51:38.1747067Z           "evidence": [
2026-06-21T01:51:38.1747158Z             {
2026-06-21T01:51:38.1747272Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:51:38.1747375Z               "line": 48
2026-06-21T01:51:38.1747456Z             },
2026-06-21T01:51:38.1747542Z             {
2026-06-21T01:51:38.1747659Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:51:38.1747744Z               "line": 55
2026-06-21T01:51:38.1747835Z             },
2026-06-21T01:51:38.1747917Z             {
2026-06-21T01:51:38.1748030Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:51:38.1748116Z               "line": 74
2026-06-21T01:51:38.1748194Z             },
2026-06-21T01:51:38.1748270Z             {
2026-06-21T01:51:38.1748378Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:51:38.1748475Z               "line": 91
2026-06-21T01:51:38.1748556Z             }
2026-06-21T01:51:38.1748651Z           ]
2026-06-21T01:51:38.1748746Z         },
2026-06-21T01:51:38.1748833Z         "int": {
2026-06-21T01:51:38.1748932Z           "complete": false,
2026-06-21T01:51:38.1749153Z           "evidence": []
2026-06-21T01:51:38.1749257Z         },
2026-06-21T01:51:38.1749347Z         "unit": {
2026-06-21T01:51:38.1749458Z           "complete": true,
2026-06-21T01:51:38.1749538Z           "evidence": [
2026-06-21T01:51:38.1749619Z             {
2026-06-21T01:51:38.1749734Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:51:38.1749815Z               "line": 149
2026-06-21T01:51:38.1749904Z             },
2026-06-21T01:51:38.1749976Z             {
2026-06-21T01:51:38.1750102Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:51:38.1750181Z               "line": 166
2026-06-21T01:51:38.1750276Z             },
2026-06-21T01:51:38.1750362Z             {
2026-06-21T01:51:38.1750477Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:51:38.1750562Z               "line": 176
2026-06-21T01:51:38.1750647Z             },
2026-06-21T01:51:38.1750739Z             {
2026-06-21T01:51:38.1750848Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:51:38.1750953Z               "line": 194
2026-06-21T01:51:38.1751044Z             },
2026-06-21T01:51:38.1751134Z             {
2026-06-21T01:51:38.1751238Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:51:38.1751325Z               "line": 207
2026-06-21T01:51:38.1751406Z             }
2026-06-21T01:51:38.1751492Z           ]
2026-06-21T01:51:38.1751587Z         }
2026-06-21T01:51:38.1751674Z       }
2026-06-21T01:51:38.1751754Z     },
2026-06-21T01:51:38.1751844Z     {
2026-06-21T01:51:38.1751950Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-21T01:51:38.1752140Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-21T01:51:38.1752231Z       "requiredStages": [
2026-06-21T01:51:38.1752323Z         "impl",
2026-06-21T01:51:38.1752416Z         "unit"
2026-06-21T01:51:38.1752497Z       ],
2026-06-21T01:51:38.1752592Z       "stages": {
2026-06-21T01:51:38.1752678Z         "doc": {
2026-06-21T01:51:38.1752776Z           "complete": false,
2026-06-21T01:51:38.1752981Z           "evidence": []
2026-06-21T01:51:38.1753095Z         },
2026-06-21T01:51:38.1753291Z         "impl": {
2026-06-21T01:51:38.1753382Z           "complete": true,
2026-06-21T01:51:38.1753472Z           "evidence": [
2026-06-21T01:51:38.1753548Z             {
2026-06-21T01:51:38.1753687Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1753772Z               "line": 466
2026-06-21T01:51:38.1753868Z             },
2026-06-21T01:51:38.1753954Z             {
2026-06-21T01:51:38.1754063Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T01:51:38.1754158Z               "line": 26
2026-06-21T01:51:38.1754241Z             }
2026-06-21T01:51:38.1754330Z           ]
2026-06-21T01:51:38.1754411Z         },
2026-06-21T01:51:38.1754502Z         "int": {
2026-06-21T01:51:38.1754598Z           "complete": false,
2026-06-21T01:51:38.1754687Z           "evidence": []
2026-06-21T01:51:38.1754774Z         },
2026-06-21T01:51:38.1754861Z         "unit": {
2026-06-21T01:51:38.1754969Z           "complete": true,
2026-06-21T01:51:38.1755055Z           "evidence": [
2026-06-21T01:51:38.1755151Z             {
2026-06-21T01:51:38.1755256Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T01:51:38.1755345Z               "line": 150
2026-06-21T01:51:38.1755435Z             },
2026-06-21T01:51:38.1755517Z             {
2026-06-21T01:51:38.1755629Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T01:51:38.1755714Z               "line": 208
2026-06-21T01:51:38.1755805Z             }
2026-06-21T01:51:38.1755887Z           ]
2026-06-21T01:51:38.1755967Z         }
2026-06-21T01:51:38.1756057Z       }
2026-06-21T01:51:38.1756139Z     },
2026-06-21T01:51:38.1756235Z     {
2026-06-21T01:51:38.1756362Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-21T01:51:38.1765755Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T01:51:38.1766138Z       "requiredStages": [
2026-06-21T01:51:38.1766217Z         "impl",
2026-06-21T01:51:38.1766317Z         "unit",
2026-06-21T01:51:38.1766404Z         "int"
2026-06-21T01:51:38.1766490Z       ],
2026-06-21T01:51:38.1766584Z       "stages": {
2026-06-21T01:51:38.1766656Z         "doc": {
2026-06-21T01:51:38.1766757Z           "complete": false,
2026-06-21T01:51:38.1766838Z           "evidence": []
2026-06-21T01:51:38.1766923Z         },
2026-06-21T01:51:38.1767019Z         "impl": {
2026-06-21T01:51:38.1767109Z           "complete": true,
2026-06-21T01:51:38.1767209Z           "evidence": [
2026-06-21T01:51:38.1767300Z             {
2026-06-21T01:51:38.1767429Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T01:51:38.1767519Z               "line": 99
2026-06-21T01:51:38.1767609Z             },
2026-06-21T01:51:38.1767696Z             {
2026-06-21T01:51:38.1767810Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T01:51:38.1767905Z               "line": 201
2026-06-21T01:51:38.1767988Z             }
2026-06-21T01:51:38.1768077Z           ]
2026-06-21T01:51:38.1768157Z         },
2026-06-21T01:51:38.1768249Z         "int": {
2026-06-21T01:51:38.1768350Z           "complete": true,
2026-06-21T01:51:38.1768439Z           "evidence": [
2026-06-21T01:51:38.1768524Z             {
2026-06-21T01:51:38.1768676Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T01:51:38.1768770Z               "line": 682
2026-06-21T01:51:38.1768860Z             }
2026-06-21T01:51:38.1769014Z           ]
2026-06-21T01:51:38.1769104Z         },
2026-06-21T01:51:38.1769179Z         "unit": {
2026-06-21T01:51:38.1769285Z           "complete": true,
2026-06-21T01:51:38.1769371Z           "evidence": [
2026-06-21T01:51:38.1769451Z             {
2026-06-21T01:51:38.1769566Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T01:51:38.1769657Z               "line": 517
2026-06-21T01:51:38.1769748Z             },
2026-06-21T01:51:38.1769832Z             {
2026-06-21T01:51:38.1769943Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T01:51:38.1770038Z               "line": 576
2026-06-21T01:51:38.1770128Z             }
2026-06-21T01:51:38.1770205Z           ]
2026-06-21T01:51:38.1770287Z         }
2026-06-21T01:51:38.1770377Z       }
2026-06-21T01:51:38.1770462Z     },
2026-06-21T01:51:38.1770540Z     {
2026-06-21T01:51:38.1770663Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-21T01:51:38.1771988Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-21T01:51:38.1772097Z       "requiredStages": [
2026-06-21T01:51:38.1772169Z         "doc",
2026-06-21T01:51:38.1772264Z         "impl",
2026-06-21T01:51:38.1772469Z         "unit"
2026-06-21T01:51:38.1772560Z       ],
2026-06-21T01:51:38.1772645Z       "stages": {
2026-06-21T01:51:38.1772851Z         "doc": {
2026-06-21T01:51:38.1772951Z           "complete": true,
2026-06-21T01:51:38.1773026Z           "evidence": [
2026-06-21T01:51:38.1773109Z             {
2026-06-21T01:51:38.1773222Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.1773312Z               "line": 214
2026-06-21T01:51:38.1773399Z             }
2026-06-21T01:51:38.1773481Z           ]
2026-06-21T01:51:38.1773556Z         },
2026-06-21T01:51:38.1773646Z         "impl": {
2026-06-21T01:51:38.1773732Z           "complete": true,
2026-06-21T01:51:38.1773817Z           "evidence": [
2026-06-21T01:51:38.1773901Z             {
2026-06-21T01:51:38.1774024Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1774106Z               "line": 56
2026-06-21T01:51:38.1774192Z             },
2026-06-21T01:51:38.1774277Z             {
2026-06-21T01:51:38.1774382Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.1774469Z               "line": 580
2026-06-21T01:51:38.1774572Z             },
2026-06-21T01:51:38.1774649Z             {
2026-06-21T01:51:38.1774783Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:51:38.1774864Z               "line": 36
2026-06-21T01:51:38.1774945Z             },
2026-06-21T01:51:38.1775036Z             {
2026-06-21T01:51:38.1775160Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:51:38.1775250Z               "line": 59
2026-06-21T01:51:38.1775337Z             },
2026-06-21T01:51:38.1775427Z             {
2026-06-21T01:51:38.1775560Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:51:38.1775642Z               "line": 83
2026-06-21T01:51:38.1775728Z             },
2026-06-21T01:51:38.1775812Z             {
2026-06-21T01:51:38.1775937Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:51:38.1776029Z               "line": 140
2026-06-21T01:51:38.1776117Z             },
2026-06-21T01:51:38.1776213Z             {
2026-06-21T01:51:38.1776320Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:51:38.1776423Z               "line": 159
2026-06-21T01:51:38.1776503Z             },
2026-06-21T01:51:38.1776579Z             {
2026-06-21T01:51:38.1776698Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:51:38.1776787Z               "line": 384
2026-06-21T01:51:38.1776877Z             },
2026-06-21T01:51:38.1776964Z             {
2026-06-21T01:51:38.1777092Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:51:38.1777178Z               "line": 535
2026-06-21T01:51:38.1777274Z             },
2026-06-21T01:51:38.1777359Z             {
2026-06-21T01:51:38.1777473Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:51:38.1777569Z               "line": 581
2026-06-21T01:51:38.1777650Z             },
2026-06-21T01:51:38.1777745Z             {
2026-06-21T01:51:38.1777865Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.1777965Z               "line": 300
2026-06-21T01:51:38.1778070Z             },
2026-06-21T01:51:38.1778160Z             {
2026-06-21T01:51:38.1778275Z               "path": "crates/spt/src/main.rs",
2026-06-21T01:51:38.1778365Z               "line": 42
2026-06-21T01:51:38.1778446Z             }
2026-06-21T01:51:38.1778528Z           ]
2026-06-21T01:51:38.1778623Z         },
2026-06-21T01:51:38.1778713Z         "int": {
2026-06-21T01:51:38.1778809Z           "complete": false,
2026-06-21T01:51:38.1778896Z           "evidence": []
2026-06-21T01:51:38.1779165Z         },
2026-06-21T01:51:38.1779255Z         "unit": {
2026-06-21T01:51:38.1779344Z           "complete": true,
2026-06-21T01:51:38.1779439Z           "evidence": [
2026-06-21T01:51:38.1779535Z             {
2026-06-21T01:51:38.1779645Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:51:38.1779744Z               "line": 813
2026-06-21T01:51:38.1779969Z             },
2026-06-21T01:51:38.1780054Z             {
2026-06-21T01:51:38.1780170Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:51:38.1780364Z               "line": 854
2026-06-21T01:51:38.1780446Z             },
2026-06-21T01:51:38.1780532Z             {
2026-06-21T01:51:38.1780655Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:51:38.1780741Z               "line": 928
2026-06-21T01:51:38.1780828Z             }
2026-06-21T01:51:38.1780913Z           ]
2026-06-21T01:51:38.1781008Z         }
2026-06-21T01:51:38.1781095Z       }
2026-06-21T01:51:38.1781176Z     },
2026-06-21T01:51:38.1781265Z     {
2026-06-21T01:51:38.1781395Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-21T01:51:38.1786397Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-21T01:51:38.1786545Z       "requiredStages": [
2026-06-21T01:51:38.1786631Z         "impl",
2026-06-21T01:51:38.1786716Z         "unit",
2026-06-21T01:51:38.1786803Z         "int"
2026-06-21T01:51:38.1786889Z       ],
2026-06-21T01:51:38.1786974Z       "stages": {
2026-06-21T01:51:38.1787063Z         "doc": {
2026-06-21T01:51:38.1787149Z           "complete": false,
2026-06-21T01:51:38.1787240Z           "evidence": []
2026-06-21T01:51:38.1787310Z         },
2026-06-21T01:51:38.1787399Z         "impl": {
2026-06-21T01:51:38.1787486Z           "complete": true,
2026-06-21T01:51:38.1787581Z           "evidence": [
2026-06-21T01:51:38.1787671Z             {
2026-06-21T01:51:38.1787805Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T01:51:38.1787896Z               "line": 106
2026-06-21T01:51:38.1787981Z             }
2026-06-21T01:51:38.1788076Z           ]
2026-06-21T01:51:38.1788163Z         },
2026-06-21T01:51:38.1788239Z         "int": {
2026-06-21T01:51:38.1788324Z           "complete": true,
2026-06-21T01:51:38.1788410Z           "evidence": [
2026-06-21T01:51:38.1788497Z             {
2026-06-21T01:51:38.1788625Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T01:51:38.1788720Z               "line": 296
2026-06-21T01:51:38.1788803Z             }
2026-06-21T01:51:38.1788882Z           ]
2026-06-21T01:51:38.1789044Z         },
2026-06-21T01:51:38.1789132Z         "unit": {
2026-06-21T01:51:38.1789225Z           "complete": true,
2026-06-21T01:51:38.1789302Z           "evidence": [
2026-06-21T01:51:38.1789512Z             {
2026-06-21T01:51:38.1789644Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:51:38.1789829Z               "line": 464
2026-06-21T01:51:38.1789914Z             }
2026-06-21T01:51:38.1789999Z           ]
2026-06-21T01:51:38.1790076Z         }
2026-06-21T01:51:38.1790153Z       }
2026-06-21T01:51:38.1790238Z     },
2026-06-21T01:51:38.1790323Z     {
2026-06-21T01:51:38.1790425Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-21T01:51:38.1793817Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-21T01:51:38.1793933Z       "requiredStages": [
2026-06-21T01:51:38.1794023Z         "impl",
2026-06-21T01:51:38.1794109Z         "unit",
2026-06-21T01:51:38.1794200Z         "int"
2026-06-21T01:51:38.1794281Z       ],
2026-06-21T01:51:38.1794375Z       "stages": {
2026-06-21T01:51:38.1794461Z         "doc": {
2026-06-21T01:51:38.1794558Z           "complete": false,
2026-06-21T01:51:38.1794648Z           "evidence": []
2026-06-21T01:51:38.1794732Z         },
2026-06-21T01:51:38.1794809Z         "impl": {
2026-06-21T01:51:38.1794909Z           "complete": true,
2026-06-21T01:51:38.1795003Z           "evidence": [
2026-06-21T01:51:38.1795078Z             {
2026-06-21T01:51:38.1795212Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:51:38.1795289Z               "line": 123
2026-06-21T01:51:38.1795378Z             },
2026-06-21T01:51:38.1795464Z             {
2026-06-21T01:51:38.1795566Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T01:51:38.1795651Z               "line": 134
2026-06-21T01:51:38.1795736Z             }
2026-06-21T01:51:38.1795823Z           ]
2026-06-21T01:51:38.1795899Z         },
2026-06-21T01:51:38.1795989Z         "int": {
2026-06-21T01:51:38.1796084Z           "complete": true,
2026-06-21T01:51:38.1796176Z           "evidence": [
2026-06-21T01:51:38.1796256Z             {
2026-06-21T01:51:38.1796370Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T01:51:38.1796462Z               "line": 312
2026-06-21T01:51:38.1796557Z             },
2026-06-21T01:51:38.1796647Z             {
2026-06-21T01:51:38.1796772Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T01:51:38.1796862Z               "line": 508
2026-06-21T01:51:38.1796947Z             }
2026-06-21T01:51:38.1797028Z           ]
2026-06-21T01:51:38.1797120Z         },
2026-06-21T01:51:38.1797205Z         "unit": {
2026-06-21T01:51:38.1797300Z           "complete": true,
2026-06-21T01:51:38.1797397Z           "evidence": [
2026-06-21T01:51:38.1797478Z             {
2026-06-21T01:51:38.1797595Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:51:38.1797680Z               "line": 250
2026-06-21T01:51:38.1797766Z             }
2026-06-21T01:51:38.1797851Z           ]
2026-06-21T01:51:38.1797936Z         }
2026-06-21T01:51:38.1798026Z       }
2026-06-21T01:51:38.1798098Z     },
2026-06-21T01:51:38.1798269Z     {
2026-06-21T01:51:38.1798389Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-21T01:51:38.1800218Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-21T01:51:38.1800427Z       "requiredStages": [
2026-06-21T01:51:38.1800512Z         "impl",
2026-06-21T01:51:38.1800603Z         "unit"
2026-06-21T01:51:38.1800684Z       ],
2026-06-21T01:51:38.1800760Z       "stages": {
2026-06-21T01:51:38.1800841Z         "doc": {
2026-06-21T01:51:38.1800932Z           "complete": false,
2026-06-21T01:51:38.1801023Z           "evidence": []
2026-06-21T01:51:38.1801108Z         },
2026-06-21T01:51:38.1801203Z         "impl": {
2026-06-21T01:51:38.1801295Z           "complete": true,
2026-06-21T01:51:38.1801380Z           "evidence": [
2026-06-21T01:51:38.1801465Z             {
2026-06-21T01:51:38.1801600Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:51:38.1801694Z               "line": 31
2026-06-21T01:51:38.1801775Z             }
2026-06-21T01:51:38.1801856Z           ]
2026-06-21T01:51:38.1801934Z         },
2026-06-21T01:51:38.1802023Z         "int": {
2026-06-21T01:51:38.1802114Z           "complete": false,
2026-06-21T01:51:38.1802191Z           "evidence": []
2026-06-21T01:51:38.1802268Z         },
2026-06-21T01:51:38.1802352Z         "unit": {
2026-06-21T01:51:38.1802443Z           "complete": true,
2026-06-21T01:51:38.1802530Z           "evidence": [
2026-06-21T01:51:38.1802615Z             {
2026-06-21T01:51:38.1802734Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:51:38.1802835Z               "line": 181
2026-06-21T01:51:38.1802926Z             }
2026-06-21T01:51:38.1802996Z           ]
2026-06-21T01:51:38.1803086Z         }
2026-06-21T01:51:38.1803171Z       }
2026-06-21T01:51:38.1803258Z     },
2026-06-21T01:51:38.1803339Z     {
2026-06-21T01:51:38.1803472Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-21T01:51:38.1803625Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-21T01:51:38.1803715Z       "requiredStages": [
2026-06-21T01:51:38.1803806Z         "impl",
2026-06-21T01:51:38.1803883Z         "unit"
2026-06-21T01:51:38.1803973Z       ],
2026-06-21T01:51:38.1804058Z       "stages": {
2026-06-21T01:51:38.1804150Z         "doc": {
2026-06-21T01:51:38.1804240Z           "complete": false,
2026-06-21T01:51:38.1804335Z           "evidence": []
2026-06-21T01:51:38.1804421Z         },
2026-06-21T01:51:38.1804508Z         "impl": {
2026-06-21T01:51:38.1804602Z           "complete": true,
2026-06-21T01:51:38.1804697Z           "evidence": [
2026-06-21T01:51:38.1804780Z             {
2026-06-21T01:51:38.1808824Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:51:38.1809016Z               "line": 49
2026-06-21T01:51:38.1809107Z             },
2026-06-21T01:51:38.1809187Z             {
2026-06-21T01:51:38.1809331Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:51:38.1809408Z               "line": 81
2026-06-21T01:51:38.1809492Z             }
2026-06-21T01:51:38.1809574Z           ]
2026-06-21T01:51:38.1809651Z         },
2026-06-21T01:51:38.1809746Z         "int": {
2026-06-21T01:51:38.1809841Z           "complete": false,
2026-06-21T01:51:38.1809937Z           "evidence": []
2026-06-21T01:51:38.1810022Z         },
2026-06-21T01:51:38.1810121Z         "unit": {
2026-06-21T01:51:38.1810214Z           "complete": true,
2026-06-21T01:51:38.1810290Z           "evidence": [
2026-06-21T01:51:38.1810369Z             {
2026-06-21T01:51:38.1810656Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:51:38.1810755Z               "line": 156
2026-06-21T01:51:38.1810960Z             },
2026-06-21T01:51:38.1811043Z             {
2026-06-21T01:51:38.1811168Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:51:38.1811254Z               "line": 173
2026-06-21T01:51:38.1811339Z             },
2026-06-21T01:51:38.1811415Z             {
2026-06-21T01:51:38.1811531Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:51:38.1811621Z               "line": 196
2026-06-21T01:51:38.1811701Z             }
2026-06-21T01:51:38.1811777Z           ]
2026-06-21T01:51:38.1811860Z         }
2026-06-21T01:51:38.1811940Z       }
2026-06-21T01:51:38.1812020Z     },
2026-06-21T01:51:38.1812107Z     {
2026-06-21T01:51:38.1812217Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-21T01:51:38.1812398Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-21T01:51:38.1812494Z       "requiredStages": [
2026-06-21T01:51:38.1812583Z         "impl",
2026-06-21T01:51:38.1812669Z         "unit"
2026-06-21T01:51:38.1812756Z       ],
2026-06-21T01:51:38.1812847Z       "stages": {
2026-06-21T01:51:38.1812936Z         "doc": {
2026-06-21T01:51:38.1813027Z           "complete": false,
2026-06-21T01:51:38.1813124Z           "evidence": []
2026-06-21T01:51:38.1813199Z         },
2026-06-21T01:51:38.1813280Z         "impl": {
2026-06-21T01:51:38.1813371Z           "complete": true,
2026-06-21T01:51:38.1813472Z           "evidence": [
2026-06-21T01:51:38.1813546Z             {
2026-06-21T01:51:38.1813674Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:51:38.1813770Z               "line": 120
2026-06-21T01:51:38.1813847Z             }
2026-06-21T01:51:38.1813927Z           ]
2026-06-21T01:51:38.1814008Z         },
2026-06-21T01:51:38.1814100Z         "int": {
2026-06-21T01:51:38.1814195Z           "complete": false,
2026-06-21T01:51:38.1814280Z           "evidence": []
2026-06-21T01:51:38.1814381Z         },
2026-06-21T01:51:38.1814457Z         "unit": {
2026-06-21T01:51:38.1814552Z           "complete": true,
2026-06-21T01:51:38.1814652Z           "evidence": [
2026-06-21T01:51:38.1814744Z             {
2026-06-21T01:51:38.1814862Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:51:38.1814961Z               "line": 212
2026-06-21T01:51:38.1815045Z             },
2026-06-21T01:51:38.1815124Z             {
2026-06-21T01:51:38.1815243Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:51:38.1815320Z               "line": 221
2026-06-21T01:51:38.1815406Z             },
2026-06-21T01:51:38.1815491Z             {
2026-06-21T01:51:38.1815606Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:51:38.1815702Z               "line": 229
2026-06-21T01:51:38.1815777Z             },
2026-06-21T01:51:38.1815853Z             {
2026-06-21T01:51:38.1815972Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:51:38.1816062Z               "line": 239
2026-06-21T01:51:38.1816156Z             },
2026-06-21T01:51:38.1816231Z             {
2026-06-21T01:51:38.1816356Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:51:38.1816438Z               "line": 249
2026-06-21T01:51:38.1816518Z             }
2026-06-21T01:51:38.1816589Z           ]
2026-06-21T01:51:38.1816681Z         }
2026-06-21T01:51:38.1816775Z       }
2026-06-21T01:51:38.1816851Z     },
2026-06-21T01:51:38.1816943Z     {
2026-06-21T01:51:38.1817057Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-21T01:51:38.1817229Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-21T01:51:38.1817315Z       "requiredStages": [
2026-06-21T01:51:38.1817405Z         "impl",
2026-06-21T01:51:38.1817481Z         "unit"
2026-06-21T01:51:38.1817562Z       ],
2026-06-21T01:51:38.1817653Z       "stages": {
2026-06-21T01:51:38.1817720Z         "doc": {
2026-06-21T01:51:38.1817819Z           "complete": false,
2026-06-21T01:51:38.1818001Z           "evidence": []
2026-06-21T01:51:38.1818082Z         },
2026-06-21T01:51:38.1818173Z         "impl": {
2026-06-21T01:51:38.1818339Z           "complete": true,
2026-06-21T01:51:38.1818435Z           "evidence": [
2026-06-21T01:51:38.1818517Z             {
2026-06-21T01:51:38.1818636Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T01:51:38.1818720Z               "line": 14
2026-06-21T01:51:38.1818805Z             },
2026-06-21T01:51:38.1818891Z             {
2026-06-21T01:51:38.1819079Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T01:51:38.1819175Z               "line": 63
2026-06-21T01:51:38.1819257Z             }
2026-06-21T01:51:38.1819328Z           ]
2026-06-21T01:51:38.1819403Z         },
2026-06-21T01:51:38.1819490Z         "int": {
2026-06-21T01:51:38.1819591Z           "complete": false,
2026-06-21T01:51:38.1819681Z           "evidence": []
2026-06-21T01:51:38.1819761Z         },
2026-06-21T01:51:38.1819834Z         "unit": {
2026-06-21T01:51:38.1819929Z           "complete": true,
2026-06-21T01:51:38.1820010Z           "evidence": [
2026-06-21T01:51:38.1820086Z             {
2026-06-21T01:51:38.1820220Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T01:51:38.1820301Z               "line": 164
2026-06-21T01:51:38.1820381Z             },
2026-06-21T01:51:38.1820459Z             {
2026-06-21T01:51:38.1820573Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T01:51:38.1820654Z               "line": 198
2026-06-21T01:51:38.1820744Z             },
2026-06-21T01:51:38.1820826Z             {
2026-06-21T01:51:38.1820925Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T01:51:38.1821006Z               "line": 220
2026-06-21T01:51:38.1821084Z             }
2026-06-21T01:51:38.1821160Z           ]
2026-06-21T01:51:38.1821240Z         }
2026-06-21T01:51:38.1821320Z       }
2026-06-21T01:51:38.1821406Z     },
2026-06-21T01:51:38.1821487Z     {
2026-06-21T01:51:38.1821603Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-21T01:51:38.1822996Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-21T01:51:38.1823102Z       "requiredStages": [],
2026-06-21T01:51:38.1823192Z       "stages": {
2026-06-21T01:51:38.1823268Z         "doc": {
2026-06-21T01:51:38.1823369Z           "complete": true,
2026-06-21T01:51:38.1823449Z           "evidence": [
2026-06-21T01:51:38.1823539Z             {
2026-06-21T01:51:38.1823646Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.1823741Z               "line": 165
2026-06-21T01:51:38.1823820Z             }
2026-06-21T01:51:38.1823897Z           ]
2026-06-21T01:51:38.1823984Z         },
2026-06-21T01:51:38.1824079Z         "impl": {
2026-06-21T01:51:38.1824173Z           "complete": false,
2026-06-21T01:51:38.1824278Z           "evidence": []
2026-06-21T01:51:38.1824364Z         },
2026-06-21T01:51:38.1824450Z         "int": {
2026-06-21T01:51:38.1824545Z           "complete": false,
2026-06-21T01:51:38.1824635Z           "evidence": []
2026-06-21T01:51:38.1824721Z         },
2026-06-21T01:51:38.1824806Z         "unit": {
2026-06-21T01:51:38.1824902Z           "complete": false,
2026-06-21T01:51:38.1824998Z           "evidence": []
2026-06-21T01:51:38.1825089Z         }
2026-06-21T01:51:38.1825174Z       }
2026-06-21T01:51:38.1825260Z     },
2026-06-21T01:51:38.1825337Z     {
2026-06-21T01:51:38.1825464Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-21T01:51:38.1825684Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-21T01:51:38.1825789Z       "requiredStages": [
2026-06-21T01:51:38.1825881Z         "impl",
2026-06-21T01:51:38.1826070Z         "unit"
2026-06-21T01:51:38.1826161Z       ],
2026-06-21T01:51:38.1826239Z       "stages": {
2026-06-21T01:51:38.1826427Z         "doc": {
2026-06-21T01:51:38.1826522Z           "complete": false,
2026-06-21T01:51:38.1826608Z           "evidence": []
2026-06-21T01:51:38.1826697Z         },
2026-06-21T01:51:38.1826772Z         "impl": {
2026-06-21T01:51:38.1826868Z           "complete": true,
2026-06-21T01:51:38.1826960Z           "evidence": [
2026-06-21T01:51:38.1827050Z             {
2026-06-21T01:51:38.1827164Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:51:38.1827255Z               "line": 76
2026-06-21T01:51:38.1827331Z             },
2026-06-21T01:51:38.1827412Z             {
2026-06-21T01:51:38.1827527Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:51:38.1827613Z               "line": 167
2026-06-21T01:51:38.1827702Z             },
2026-06-21T01:51:38.1827789Z             {
2026-06-21T01:51:38.1827903Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:51:38.1828003Z               "line": 233
2026-06-21T01:51:38.1828079Z             },
2026-06-21T01:51:38.1828176Z             {
2026-06-21T01:51:38.1828285Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:51:38.1828370Z               "line": 272
2026-06-21T01:51:38.1828447Z             }
2026-06-21T01:51:38.1828533Z           ]
2026-06-21T01:51:38.1828613Z         },
2026-06-21T01:51:38.1828685Z         "int": {
2026-06-21T01:51:38.1828782Z           "complete": false,
2026-06-21T01:51:38.1828862Z           "evidence": []
2026-06-21T01:51:38.1829014Z         },
2026-06-21T01:51:38.1829096Z         "unit": {
2026-06-21T01:51:38.1829191Z           "complete": true,
2026-06-21T01:51:38.1829276Z           "evidence": [
2026-06-21T01:51:38.1829346Z             {
2026-06-21T01:51:38.1829461Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:51:38.1829545Z               "line": 321
2026-06-21T01:51:38.1829630Z             },
2026-06-21T01:51:38.1829721Z             {
2026-06-21T01:51:38.1829832Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:51:38.1829931Z               "line": 329
2026-06-21T01:51:38.1830002Z             },
2026-06-21T01:51:38.1830089Z             {
2026-06-21T01:51:38.1830184Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:51:38.1830279Z               "line": 356
2026-06-21T01:51:38.1830355Z             },
2026-06-21T01:51:38.1830432Z             {
2026-06-21T01:51:38.1830542Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:51:38.1830626Z               "line": 395
2026-06-21T01:51:38.1830714Z             },
2026-06-21T01:51:38.1830794Z             {
2026-06-21T01:51:38.1830909Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:51:38.1830999Z               "line": 406
2026-06-21T01:51:38.1831085Z             },
2026-06-21T01:51:38.1831161Z             {
2026-06-21T01:51:38.1831275Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:51:38.1831376Z               "line": 418
2026-06-21T01:51:38.1831452Z             },
2026-06-21T01:51:38.1831543Z             {
2026-06-21T01:51:38.1831663Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:51:38.1831749Z               "line": 442
2026-06-21T01:51:38.1831833Z             }
2026-06-21T01:51:38.1831908Z           ]
2026-06-21T01:51:38.1831985Z         }
2026-06-21T01:51:38.1832061Z       }
2026-06-21T01:51:38.1832155Z     },
2026-06-21T01:51:38.1832240Z     {
2026-06-21T01:51:38.1832350Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-21T01:51:38.1832493Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-21T01:51:38.1832583Z       "requiredStages": [
2026-06-21T01:51:38.1832675Z         "impl",
2026-06-21T01:51:38.1832751Z         "int"
2026-06-21T01:51:38.1832840Z       ],
2026-06-21T01:51:38.1832932Z       "stages": {
2026-06-21T01:51:38.1833013Z         "doc": {
2026-06-21T01:51:38.1833113Z           "complete": false,
2026-06-21T01:51:38.1833198Z           "evidence": []
2026-06-21T01:51:38.1833389Z         },
2026-06-21T01:51:38.1833470Z         "impl": {
2026-06-21T01:51:38.1833662Z           "complete": true,
2026-06-21T01:51:38.1833757Z           "evidence": [
2026-06-21T01:51:38.1833838Z             {
2026-06-21T01:51:38.1833958Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.1834051Z               "line": 22
2026-06-21T01:51:38.1834138Z             }
2026-06-21T01:51:38.1834211Z           ]
2026-06-21T01:51:38.1834296Z         },
2026-06-21T01:51:38.1834385Z         "int": {
2026-06-21T01:51:38.1834467Z           "complete": true,
2026-06-21T01:51:38.1834559Z           "evidence": [
2026-06-21T01:51:38.1834639Z             {
2026-06-21T01:51:38.1834771Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-21T01:51:38.1834857Z               "line": 18
2026-06-21T01:51:38.1834943Z             }
2026-06-21T01:51:38.1835033Z           ]
2026-06-21T01:51:38.1835109Z         },
2026-06-21T01:51:38.1835200Z         "unit": {
2026-06-21T01:51:38.1835296Z           "complete": false,
2026-06-21T01:51:38.1835390Z           "evidence": []
2026-06-21T01:51:38.1835467Z         }
2026-06-21T01:51:38.1835554Z       }
2026-06-21T01:51:38.1835630Z     },
2026-06-21T01:51:38.1835700Z     {
2026-06-21T01:51:38.1835816Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-21T01:51:38.1836001Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-21T01:51:38.1836101Z       "requiredStages": [
2026-06-21T01:51:38.1836174Z         "impl",
2026-06-21T01:51:38.1836263Z         "unit"
2026-06-21T01:51:38.1836344Z       ],
2026-06-21T01:51:38.1836431Z       "stages": {
2026-06-21T01:51:38.1836522Z         "doc": {
2026-06-21T01:51:38.1836611Z           "complete": false,
2026-06-21T01:51:38.1836702Z           "evidence": []
2026-06-21T01:51:38.1836775Z         },
2026-06-21T01:51:38.1836870Z         "impl": {
2026-06-21T01:51:38.1836968Z           "complete": true,
2026-06-21T01:51:38.1837053Z           "evidence": [
2026-06-21T01:51:38.1837140Z             {
2026-06-21T01:51:38.1837261Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1837361Z               "line": 465
2026-06-21T01:51:38.1837443Z             },
2026-06-21T01:51:38.1837520Z             {
2026-06-21T01:51:38.1837638Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T01:51:38.1837729Z               "line": 27
2026-06-21T01:51:38.1837806Z             }
2026-06-21T01:51:38.1837882Z           ]
2026-06-21T01:51:38.1837967Z         },
2026-06-21T01:51:38.1838044Z         "int": {
2026-06-21T01:51:38.1838139Z           "complete": false,
2026-06-21T01:51:38.1838234Z           "evidence": []
2026-06-21T01:51:38.1838315Z         },
2026-06-21T01:51:38.1838407Z         "unit": {
2026-06-21T01:51:38.1838502Z           "complete": true,
2026-06-21T01:51:38.1838596Z           "evidence": [
2026-06-21T01:51:38.1838678Z             {
2026-06-21T01:51:38.1838801Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.1838897Z               "line": 990
2026-06-21T01:51:38.1839051Z             },
2026-06-21T01:51:38.1839150Z             {
2026-06-21T01:51:38.1839264Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T01:51:38.1839356Z               "line": 181
2026-06-21T01:51:38.1839436Z             }
2026-06-21T01:51:38.1839521Z           ]
2026-06-21T01:51:38.1839593Z         }
2026-06-21T01:51:38.1839676Z       }
2026-06-21T01:51:38.1839765Z     },
2026-06-21T01:51:38.1839840Z     {
2026-06-21T01:51:38.1839964Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-21T01:51:38.1840124Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-21T01:51:38.1840223Z       "requiredStages": [
2026-06-21T01:51:38.1840315Z         "impl",
2026-06-21T01:51:38.1840397Z         "unit"
2026-06-21T01:51:38.1840486Z       ],
2026-06-21T01:51:38.1840577Z       "stages": {
2026-06-21T01:51:38.1840668Z         "doc": {
2026-06-21T01:51:38.1840763Z           "complete": false,
2026-06-21T01:51:38.1840973Z           "evidence": []
2026-06-21T01:51:38.1841064Z         },
2026-06-21T01:51:38.1841269Z         "impl": {
2026-06-21T01:51:38.1841378Z           "complete": true,
2026-06-21T01:51:38.1841464Z           "evidence": [
2026-06-21T01:51:38.1841550Z             {
2026-06-21T01:51:38.1841688Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1841778Z               "line": 73
2026-06-21T01:51:38.1841865Z             },
2026-06-21T01:51:38.1841946Z             {
2026-06-21T01:51:38.1842073Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1842170Z               "line": 972
2026-06-21T01:51:38.1842271Z             },
2026-06-21T01:51:38.1842341Z             {
2026-06-21T01:51:38.1842464Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T01:51:38.1842564Z               "line": 20
2026-06-21T01:51:38.1842644Z             },
2026-06-21T01:51:38.1842738Z             {
2026-06-21T01:51:38.1842853Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T01:51:38.1842949Z               "line": 100
2026-06-21T01:51:38.1843034Z             },
2026-06-21T01:51:38.1843134Z             {
2026-06-21T01:51:38.1843311Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:51:38.1843444Z               "line": 603
2026-06-21T01:51:38.1843583Z             },
2026-06-21T01:51:38.1843664Z             {
2026-06-21T01:51:38.1843797Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T01:51:38.1843883Z               "line": 68
2026-06-21T01:51:38.1843973Z             },
2026-06-21T01:51:38.1844049Z             {
2026-06-21T01:51:38.1844170Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T01:51:38.1844264Z               "line": 80
2026-06-21T01:51:38.1844341Z             }
2026-06-21T01:51:38.1844426Z           ]
2026-06-21T01:51:38.1844513Z         },
2026-06-21T01:51:38.1844602Z         "int": {
2026-06-21T01:51:38.1844698Z           "complete": true,
2026-06-21T01:51:38.1844799Z           "evidence": [
2026-06-21T01:51:38.1844889Z             {
2026-06-21T01:51:38.1844998Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T01:51:38.1845100Z               "line": 44
2026-06-21T01:51:38.1845181Z             }
2026-06-21T01:51:38.1845269Z           ]
2026-06-21T01:51:38.1845360Z         },
2026-06-21T01:51:38.1845441Z         "unit": {
2026-06-21T01:51:38.1845542Z           "complete": true,
2026-06-21T01:51:38.1845626Z           "evidence": [
2026-06-21T01:51:38.1845717Z             {
2026-06-21T01:51:38.1845828Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1845918Z               "line": 1181
2026-06-21T01:51:38.1846013Z             },
2026-06-21T01:51:38.1846090Z             {
2026-06-21T01:51:38.1846205Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.1846294Z               "line": 1197
2026-06-21T01:51:38.1846381Z             },
2026-06-21T01:51:38.1846457Z             {
2026-06-21T01:51:38.1846580Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1846671Z               "line": 2246
2026-06-21T01:51:38.1846767Z             },
2026-06-21T01:51:38.1846842Z             {
2026-06-21T01:51:38.1846952Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T01:51:38.1847049Z               "line": 152
2026-06-21T01:51:38.1847129Z             },
2026-06-21T01:51:38.1847210Z             {
2026-06-21T01:51:38.1847325Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T01:51:38.1847416Z               "line": 175
2026-06-21T01:51:38.1847505Z             },
2026-06-21T01:51:38.1847576Z             {
2026-06-21T01:51:38.1847686Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T01:51:38.1847771Z               "line": 186
2026-06-21T01:51:38.1847850Z             },
2026-06-21T01:51:38.1847940Z             {
2026-06-21T01:51:38.1848046Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T01:51:38.1848265Z               "line": 202
2026-06-21T01:51:38.1848352Z             },
2026-06-21T01:51:38.1848447Z             {
2026-06-21T01:51:38.1848638Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T01:51:38.1848728Z               "line": 216
2026-06-21T01:51:38.1848827Z             },
2026-06-21T01:51:38.1848909Z             {
2026-06-21T01:51:38.1849118Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T01:51:38.1849209Z               "line": 137
2026-06-21T01:51:38.1849306Z             },
2026-06-21T01:51:38.1849395Z             {
2026-06-21T01:51:38.1849505Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1849592Z               "line": 8152
2026-06-21T01:51:38.1849681Z             },
2026-06-21T01:51:38.1849767Z             {
2026-06-21T01:51:38.1849883Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T01:51:38.1849978Z               "line": 30
2026-06-21T01:51:38.1850062Z             },
2026-06-21T01:51:38.1850144Z             {
2026-06-21T01:51:38.1850274Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T01:51:38.1850358Z               "line": 73
2026-06-21T01:51:38.1850452Z             }
2026-06-21T01:51:38.1850533Z           ]
2026-06-21T01:51:38.1850614Z         }
2026-06-21T01:51:38.1850703Z       }
2026-06-21T01:51:38.1850788Z     },
2026-06-21T01:51:38.1850870Z     {
2026-06-21T01:51:38.1850990Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-21T01:51:38.1855449Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-21T01:51:38.1855689Z       "requiredStages": [
2026-06-21T01:51:38.1855792Z         "impl",
2026-06-21T01:51:38.1855877Z         "unit",
2026-06-21T01:51:38.1855963Z         "int"
2026-06-21T01:51:38.1856059Z       ],
2026-06-21T01:51:38.1856149Z       "stages": {
2026-06-21T01:51:38.1856244Z         "doc": {
2026-06-21T01:51:38.1856345Z           "complete": false,
2026-06-21T01:51:38.1856441Z           "evidence": []
2026-06-21T01:51:38.1856530Z         },
2026-06-21T01:51:38.1856617Z         "impl": {
2026-06-21T01:51:38.1856717Z           "complete": true,
2026-06-21T01:51:38.1856807Z           "evidence": [
2026-06-21T01:51:38.1856926Z             {
2026-06-21T01:51:38.1857122Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1857226Z               "line": 510
2026-06-21T01:51:38.1857318Z             },
2026-06-21T01:51:38.1857398Z             {
2026-06-21T01:51:38.1857527Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1857614Z               "line": 704
2026-06-21T01:51:38.1857699Z             }
2026-06-21T01:51:38.1857770Z           ]
2026-06-21T01:51:38.1857856Z         },
2026-06-21T01:51:38.1857943Z         "int": {
2026-06-21T01:51:38.1858265Z           "complete": true,
2026-06-21T01:51:38.1858350Z           "evidence": [
2026-06-21T01:51:38.1858434Z             {
2026-06-21T01:51:38.1858664Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1858744Z               "line": 1119
2026-06-21T01:51:38.1858835Z             },
2026-06-21T01:51:38.1858917Z             {
2026-06-21T01:51:38.1859144Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T01:51:38.1859236Z               "line": 312
2026-06-21T01:51:38.1859312Z             }
2026-06-21T01:51:38.1859392Z           ]
2026-06-21T01:51:38.1859474Z         },
2026-06-21T01:51:38.1859556Z         "unit": {
2026-06-21T01:51:38.1859651Z           "complete": true,
2026-06-21T01:51:38.1859735Z           "evidence": [
2026-06-21T01:51:38.1859822Z             {
2026-06-21T01:51:38.1859941Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1860031Z               "line": 821
2026-06-21T01:51:38.1860108Z             }
2026-06-21T01:51:38.1860195Z           ]
2026-06-21T01:51:38.1860284Z         }
2026-06-21T01:51:38.1860360Z       }
2026-06-21T01:51:38.1860452Z     },
2026-06-21T01:51:38.1860538Z     {
2026-06-21T01:51:38.1860647Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-21T01:51:38.1860899Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-21T01:51:38.1861004Z       "requiredStages": [
2026-06-21T01:51:38.1861085Z         "impl",
2026-06-21T01:51:38.1861166Z         "unit"
2026-06-21T01:51:38.1861249Z       ],
2026-06-21T01:51:38.1861335Z       "stages": {
2026-06-21T01:51:38.1861425Z         "doc": {
2026-06-21T01:51:38.1861512Z           "complete": true,
2026-06-21T01:51:38.1861602Z           "evidence": [
2026-06-21T01:51:38.1861682Z             {
2026-06-21T01:51:38.1861784Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.1861884Z               "line": 133
2026-06-21T01:51:38.1861964Z             }
2026-06-21T01:51:38.1862055Z           ]
2026-06-21T01:51:38.1862141Z         },
2026-06-21T01:51:38.1862222Z         "impl": {
2026-06-21T01:51:38.1862317Z           "complete": true,
2026-06-21T01:51:38.1862409Z           "evidence": [
2026-06-21T01:51:38.1862503Z             {
2026-06-21T01:51:38.1862617Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:51:38.1862714Z               "line": 65
2026-06-21T01:51:38.1862799Z             },
2026-06-21T01:51:38.1862879Z             {
2026-06-21T01:51:38.1863000Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T01:51:38.1863090Z               "line": 17
2026-06-21T01:51:38.1863180Z             },
2026-06-21T01:51:38.1863266Z             {
2026-06-21T01:51:38.1863396Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:51:38.1863480Z               "line": 146
2026-06-21T01:51:38.1863565Z             },
2026-06-21T01:51:38.1863651Z             {
2026-06-21T01:51:38.1863764Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.1863859Z               "line": 310
2026-06-21T01:51:38.1863939Z             },
2026-06-21T01:51:38.1864026Z             {
2026-06-21T01:51:38.1864135Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.1864225Z               "line": 441
2026-06-21T01:51:38.1864312Z             },
2026-06-21T01:51:38.1864389Z             {
2026-06-21T01:51:38.1864502Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:51:38.1864593Z               "line": 32
2026-06-21T01:51:38.1864674Z             },
2026-06-21T01:51:38.1864755Z             {
2026-06-21T01:51:38.1864864Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1864961Z               "line": 1283
2026-06-21T01:51:38.1865041Z             },
2026-06-21T01:51:38.1865127Z             {
2026-06-21T01:51:38.1865227Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1865323Z               "line": 6161
2026-06-21T01:51:38.1865394Z             },
2026-06-21T01:51:38.1865485Z             {
2026-06-21T01:51:38.1865709Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1865794Z               "line": 6443
2026-06-21T01:51:38.1865986Z             }
2026-06-21T01:51:38.1866066Z           ]
2026-06-21T01:51:38.1866147Z         },
2026-06-21T01:51:38.1866235Z         "int": {
2026-06-21T01:51:38.1866338Z           "complete": false,
2026-06-21T01:51:38.1866432Z           "evidence": []
2026-06-21T01:51:38.1866518Z         },
2026-06-21T01:51:38.1866615Z         "unit": {
2026-06-21T01:51:38.1866709Z           "complete": true,
2026-06-21T01:51:38.1866799Z           "evidence": [
2026-06-21T01:51:38.1866886Z             {
2026-06-21T01:51:38.1867001Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T01:51:38.1867094Z               "line": 94
2026-06-21T01:51:38.1867177Z             },
2026-06-21T01:51:38.1867267Z             {
2026-06-21T01:51:38.1867362Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T01:51:38.1867458Z               "line": 111
2026-06-21T01:51:38.1867544Z             },
2026-06-21T01:51:38.1867639Z             {
2026-06-21T01:51:38.1867748Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T01:51:38.1867840Z               "line": 124
2026-06-21T01:51:38.1867921Z             },
2026-06-21T01:51:38.1867997Z             {
2026-06-21T01:51:38.1868106Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T01:51:38.1868193Z               "line": 134
2026-06-21T01:51:38.1868278Z             },
2026-06-21T01:51:38.1868363Z             {
2026-06-21T01:51:38.1868470Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T01:51:38.1868555Z               "line": 144
2026-06-21T01:51:38.1868634Z             },
2026-06-21T01:51:38.1868720Z             {
2026-06-21T01:51:38.1868830Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T01:51:38.1868914Z               "line": 156
2026-06-21T01:51:38.1869104Z             },
2026-06-21T01:51:38.1869190Z             {
2026-06-21T01:51:38.1869323Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.1869414Z               "line": 746
2026-06-21T01:51:38.1869501Z             },
2026-06-21T01:51:38.1869591Z             {
2026-06-21T01:51:38.1869700Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:51:38.1869796Z               "line": 309
2026-06-21T01:51:38.1869877Z             }
2026-06-21T01:51:38.1869957Z           ]
2026-06-21T01:51:38.1870029Z         }
2026-06-21T01:51:38.1870111Z       }
2026-06-21T01:51:38.1870201Z     },
2026-06-21T01:51:38.1870286Z     {
2026-06-21T01:51:38.1870402Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-21T01:51:38.1870535Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-21T01:51:38.1870634Z       "requiredStages": [
2026-06-21T01:51:38.1870712Z         "impl",
2026-06-21T01:51:38.1870797Z         "unit"
2026-06-21T01:51:38.1870883Z       ],
2026-06-21T01:51:38.1870964Z       "stages": {
2026-06-21T01:51:38.1871051Z         "doc": {
2026-06-21T01:51:38.1871140Z           "complete": false,
2026-06-21T01:51:38.1871230Z           "evidence": []
2026-06-21T01:51:38.1871318Z         },
2026-06-21T01:51:38.1871409Z         "impl": {
2026-06-21T01:51:38.1871511Z           "complete": true,
2026-06-21T01:51:38.1871596Z           "evidence": [
2026-06-21T01:51:38.1871682Z             {
2026-06-21T01:51:38.1871786Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:51:38.1871871Z               "line": 128
2026-06-21T01:51:38.1871952Z             }
2026-06-21T01:51:38.1872043Z           ]
2026-06-21T01:51:38.1872129Z         },
2026-06-21T01:51:38.1872209Z         "int": {
2026-06-21T01:51:38.1872300Z           "complete": false,
2026-06-21T01:51:38.1872386Z           "evidence": []
2026-06-21T01:51:38.1872467Z         },
2026-06-21T01:51:38.1872553Z         "unit": {
2026-06-21T01:51:38.1872644Z           "complete": true,
2026-06-21T01:51:38.1872725Z           "evidence": [
2026-06-21T01:51:38.1872805Z             {
2026-06-21T01:51:38.1872911Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:51:38.1873116Z               "line": 205
2026-06-21T01:51:38.1873197Z             }
2026-06-21T01:51:38.1873377Z           ]
2026-06-21T01:51:38.1873463Z         }
2026-06-21T01:51:38.1873550Z       }
2026-06-21T01:51:38.1873632Z     },
2026-06-21T01:51:38.1873720Z     {
2026-06-21T01:51:38.1873836Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-21T01:51:38.1873979Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-21T01:51:38.1874073Z       "requiredStages": [
2026-06-21T01:51:38.1874158Z         "impl",
2026-06-21T01:51:38.1874240Z         "unit"
2026-06-21T01:51:38.1874311Z       ],
2026-06-21T01:51:38.1874390Z       "stages": {
2026-06-21T01:51:38.1874470Z         "doc": {
2026-06-21T01:51:38.1874567Z           "complete": false,
2026-06-21T01:51:38.1874653Z           "evidence": []
2026-06-21T01:51:38.1874738Z         },
2026-06-21T01:51:38.1874824Z         "impl": {
2026-06-21T01:51:38.1874910Z           "complete": true,
2026-06-21T01:51:38.1875001Z           "evidence": [
2026-06-21T01:51:38.1875081Z             {
2026-06-21T01:51:38.1875197Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.1875277Z               "line": 367
2026-06-21T01:51:38.1875363Z             },
2026-06-21T01:51:38.1875438Z             {
2026-06-21T01:51:38.1875536Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.1875630Z               "line": 378
2026-06-21T01:51:38.1875710Z             },
2026-06-21T01:51:38.1875797Z             {
2026-06-21T01:51:38.1875902Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.1875987Z               "line": 396
2026-06-21T01:51:38.1876073Z             }
2026-06-21T01:51:38.1876156Z           ]
2026-06-21T01:51:38.1876245Z         },
2026-06-21T01:51:38.1876326Z         "int": {
2026-06-21T01:51:38.1876412Z           "complete": false,
2026-06-21T01:51:38.1876499Z           "evidence": []
2026-06-21T01:51:38.1876583Z         },
2026-06-21T01:51:38.1876669Z         "unit": {
2026-06-21T01:51:38.1876752Z           "complete": true,
2026-06-21T01:51:38.1876847Z           "evidence": [
2026-06-21T01:51:38.1876931Z             {
2026-06-21T01:51:38.1877044Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.1877131Z               "line": 420
2026-06-21T01:51:38.1877218Z             },
2026-06-21T01:51:38.1881334Z             {
2026-06-21T01:51:38.1881481Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.1881578Z               "line": 441
2026-06-21T01:51:38.1881658Z             },
2026-06-21T01:51:38.1881742Z             {
2026-06-21T01:51:38.1881853Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.1881945Z               "line": 811
2026-06-21T01:51:38.1882029Z             },
2026-06-21T01:51:38.1882109Z             {
2026-06-21T01:51:38.1882214Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.1882295Z               "line": 822
2026-06-21T01:51:38.1882379Z             },
2026-06-21T01:51:38.1882479Z             {
2026-06-21T01:51:38.1882594Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.1882689Z               "line": 835
2026-06-21T01:51:38.1882769Z             }
2026-06-21T01:51:38.1882856Z           ]
2026-06-21T01:51:38.1882923Z         }
2026-06-21T01:51:38.1883004Z       }
2026-06-21T01:51:38.1883084Z     },
2026-06-21T01:51:38.1883156Z     {
2026-06-21T01:51:38.1883275Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-21T01:51:38.1890854Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-21T01:51:38.1891255Z       "requiredStages": [
2026-06-21T01:51:38.1891345Z         "impl",
2026-06-21T01:51:38.1891440Z         "unit",
2026-06-21T01:51:38.1891518Z         "int"
2026-06-21T01:51:38.1891598Z       ],
2026-06-21T01:51:38.1891688Z       "stages": {
2026-06-21T01:51:38.1891769Z         "doc": {
2026-06-21T01:51:38.1891861Z           "complete": false,
2026-06-21T01:51:38.1891951Z           "evidence": []
2026-06-21T01:51:38.1892036Z         },
2026-06-21T01:51:38.1892118Z         "impl": {
2026-06-21T01:51:38.1892209Z           "complete": true,
2026-06-21T01:51:38.1892289Z           "evidence": [
2026-06-21T01:51:38.1892365Z             {
2026-06-21T01:51:38.1892490Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1892575Z               "line": 300
2026-06-21T01:51:38.1892660Z             },
2026-06-21T01:51:38.1892736Z             {
2026-06-21T01:51:38.1892860Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1892944Z               "line": 714
2026-06-21T01:51:38.1893024Z             },
2026-06-21T01:51:38.1893101Z             {
2026-06-21T01:51:38.1893221Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1893315Z               "line": 978
2026-06-21T01:51:38.1893391Z             }
2026-06-21T01:51:38.1893469Z           ]
2026-06-21T01:51:38.1893540Z         },
2026-06-21T01:51:38.1893630Z         "int": {
2026-06-21T01:51:38.1893711Z           "complete": true,
2026-06-21T01:51:38.1893793Z           "evidence": [
2026-06-21T01:51:38.1893874Z             {
2026-06-21T01:51:38.1894016Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T01:51:38.1894108Z               "line": 222
2026-06-21T01:51:38.1894188Z             },
2026-06-21T01:51:38.1894274Z             {
2026-06-21T01:51:38.1894413Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T01:51:38.1894503Z               "line": 348
2026-06-21T01:51:38.1894589Z             }
2026-06-21T01:51:38.1894665Z           ]
2026-06-21T01:51:38.1894752Z         },
2026-06-21T01:51:38.1894917Z         "unit": {
2026-06-21T01:51:38.1895010Z           "complete": true,
2026-06-21T01:51:38.1895090Z           "evidence": [
2026-06-21T01:51:38.1895241Z             {
2026-06-21T01:51:38.1895360Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1895441Z               "line": 2274
2026-06-21T01:51:38.1895524Z             },
2026-06-21T01:51:38.1895605Z             {
2026-06-21T01:51:38.1895716Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1895802Z               "line": 2332
2026-06-21T01:51:38.1895882Z             }
2026-06-21T01:51:38.1895968Z           ]
2026-06-21T01:51:38.1896041Z         }
2026-06-21T01:51:38.1896126Z       }
2026-06-21T01:51:38.1896206Z     },
2026-06-21T01:51:38.1896288Z     {
2026-06-21T01:51:38.1896431Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-21T01:51:38.1903671Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-21T01:51:38.1903809Z       "requiredStages": [
2026-06-21T01:51:38.1903894Z         "doc",
2026-06-21T01:51:38.1903981Z         "impl",
2026-06-21T01:51:38.1904063Z         "unit",
2026-06-21T01:51:38.1904148Z         "int"
2026-06-21T01:51:38.1904228Z       ],
2026-06-21T01:51:38.1904311Z       "stages": {
2026-06-21T01:51:38.1904391Z         "doc": {
2026-06-21T01:51:38.1904481Z           "complete": true,
2026-06-21T01:51:38.1904567Z           "evidence": [
2026-06-21T01:51:38.1904649Z             {
2026-06-21T01:51:38.1904753Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.1904834Z               "line": 454
2026-06-21T01:51:38.1904915Z             }
2026-06-21T01:51:38.1904992Z           ]
2026-06-21T01:51:38.1905073Z         },
2026-06-21T01:51:38.1905279Z         "impl": {
2026-06-21T01:51:38.1905369Z           "complete": true,
2026-06-21T01:51:38.1905555Z           "evidence": [
2026-06-21T01:51:38.1905632Z             {
2026-06-21T01:51:38.1905758Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T01:51:38.1905839Z               "line": 203
2026-06-21T01:51:38.1905925Z             },
2026-06-21T01:51:38.1906010Z             {
2026-06-21T01:51:38.1906118Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.1906199Z               "line": 487
2026-06-21T01:51:38.1906281Z             },
2026-06-21T01:51:38.1906362Z             {
2026-06-21T01:51:38.1906475Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1906567Z               "line": 1688
2026-06-21T01:51:38.1906657Z             },
2026-06-21T01:51:38.1906733Z             {
2026-06-21T01:51:38.1906848Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:51:38.1906934Z               "line": 331
2026-06-21T01:51:38.1907025Z             }
2026-06-21T01:51:38.1907105Z           ]
2026-06-21T01:51:38.1907187Z         },
2026-06-21T01:51:38.1907282Z         "int": {
2026-06-21T01:51:38.1907363Z           "complete": true,
2026-06-21T01:51:38.1907458Z           "evidence": [
2026-06-21T01:51:38.1907526Z             {
2026-06-21T01:51:38.1907644Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T01:51:38.1907734Z               "line": 720
2026-06-21T01:51:38.1907821Z             },
2026-06-21T01:51:38.1907907Z             {
2026-06-21T01:51:38.1908016Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T01:51:38.1908112Z               "line": 837
2026-06-21T01:51:38.1908189Z             },
2026-06-21T01:51:38.1908268Z             {
2026-06-21T01:51:38.1908412Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-21T01:51:38.1908499Z               "line": 266
2026-06-21T01:51:38.1908579Z             }
2026-06-21T01:51:38.1908659Z           ]
2026-06-21T01:51:38.1908739Z         },
2026-06-21T01:51:38.1908811Z         "unit": {
2026-06-21T01:51:38.1908898Z           "complete": true,
2026-06-21T01:51:38.1909083Z           "evidence": [
2026-06-21T01:51:38.1909165Z             {
2026-06-21T01:51:38.1909278Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:51:38.1909364Z               "line": 985
2026-06-21T01:51:38.1909446Z             },
2026-06-21T01:51:38.1909522Z             {
2026-06-21T01:51:38.1909640Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:51:38.1909727Z               "line": 1019
2026-06-21T01:51:38.1909813Z             }
2026-06-21T01:51:38.1909894Z           ]
2026-06-21T01:51:38.1909979Z         }
2026-06-21T01:51:38.1910056Z       }
2026-06-21T01:51:38.1910142Z     },
2026-06-21T01:51:38.1910218Z     {
2026-06-21T01:51:38.1910327Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-21T01:51:38.1910885Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-21T01:51:38.1910989Z       "requiredStages": [
2026-06-21T01:51:38.1911061Z         "impl",
2026-06-21T01:51:38.1911150Z         "unit"
2026-06-21T01:51:38.1911230Z       ],
2026-06-21T01:51:38.1911311Z       "stages": {
2026-06-21T01:51:38.1911397Z         "doc": {
2026-06-21T01:51:38.1911483Z           "complete": false,
2026-06-21T01:51:38.1911578Z           "evidence": []
2026-06-21T01:51:38.1911659Z         },
2026-06-21T01:51:38.1911736Z         "impl": {
2026-06-21T01:51:38.1911821Z           "complete": true,
2026-06-21T01:51:38.1911921Z           "evidence": [
2026-06-21T01:51:38.1912004Z             {
2026-06-21T01:51:38.1912122Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.1912203Z               "line": 759
2026-06-21T01:51:38.1912280Z             }
2026-06-21T01:51:38.1912361Z           ]
2026-06-21T01:51:38.1912442Z         },
2026-06-21T01:51:38.1912652Z         "int": {
2026-06-21T01:51:38.1912746Z           "complete": false,
2026-06-21T01:51:38.1912928Z           "evidence": []
2026-06-21T01:51:38.1913009Z         },
2026-06-21T01:51:38.1913094Z         "unit": {
2026-06-21T01:51:38.1913180Z           "complete": true,
2026-06-21T01:51:38.1913263Z           "evidence": [
2026-06-21T01:51:38.1913343Z             {
2026-06-21T01:51:38.1913467Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.1913549Z               "line": 873
2026-06-21T01:51:38.1913639Z             }
2026-06-21T01:51:38.1913719Z           ]
2026-06-21T01:51:38.1913799Z         }
2026-06-21T01:51:38.1913880Z       }
2026-06-21T01:51:38.1913966Z     },
2026-06-21T01:51:38.1914045Z     {
2026-06-21T01:51:38.1914163Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-21T01:51:38.1916494Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-21T01:51:38.1916603Z       "requiredStages": [
2026-06-21T01:51:38.1916682Z         "impl",
2026-06-21T01:51:38.1916769Z         "unit",
2026-06-21T01:51:38.1916836Z         "int"
2026-06-21T01:51:38.1916918Z       ],
2026-06-21T01:51:38.1917002Z       "stages": {
2026-06-21T01:51:38.1917078Z         "doc": {
2026-06-21T01:51:38.1917175Z           "complete": false,
2026-06-21T01:51:38.1917261Z           "evidence": []
2026-06-21T01:51:38.1917350Z         },
2026-06-21T01:51:38.1917432Z         "impl": {
2026-06-21T01:51:38.1917527Z           "complete": true,
2026-06-21T01:51:38.1917608Z           "evidence": [
2026-06-21T01:51:38.1917679Z             {
2026-06-21T01:51:38.1917809Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1917889Z               "line": 705
2026-06-21T01:51:38.1917975Z             }
2026-06-21T01:51:38.1918052Z           ]
2026-06-21T01:51:38.1918133Z         },
2026-06-21T01:51:38.1918219Z         "int": {
2026-06-21T01:51:38.1918309Z           "complete": true,
2026-06-21T01:51:38.1918391Z           "evidence": [
2026-06-21T01:51:38.1918462Z             {
2026-06-21T01:51:38.1918604Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-21T01:51:38.1918687Z               "line": 24
2026-06-21T01:51:38.1918773Z             }
2026-06-21T01:51:38.1918861Z           ]
2026-06-21T01:51:38.1918933Z         },
2026-06-21T01:51:38.1919102Z         "unit": {
2026-06-21T01:51:38.1919195Z           "complete": true,
2026-06-21T01:51:38.1919276Z           "evidence": [
2026-06-21T01:51:38.1919357Z             {
2026-06-21T01:51:38.1919477Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1919571Z               "line": 918
2026-06-21T01:51:38.1919643Z             }
2026-06-21T01:51:38.1919725Z           ]
2026-06-21T01:51:38.1919802Z         }
2026-06-21T01:51:38.1919886Z       }
2026-06-21T01:51:38.1919958Z     },
2026-06-21T01:51:38.1920040Z     {
2026-06-21T01:51:38.1920154Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-21T01:51:38.1923674Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-21T01:51:38.1923998Z       "requiredStages": [
2026-06-21T01:51:38.1924079Z         "impl",
2026-06-21T01:51:38.1924171Z         "unit",
2026-06-21T01:51:38.1924246Z         "int"
2026-06-21T01:51:38.1924331Z       ],
2026-06-21T01:51:38.1924416Z       "stages": {
2026-06-21T01:51:38.1924488Z         "doc": {
2026-06-21T01:51:38.1924582Z           "complete": false,
2026-06-21T01:51:38.1924667Z           "evidence": []
2026-06-21T01:51:38.1924748Z         },
2026-06-21T01:51:38.1924834Z         "impl": {
2026-06-21T01:51:38.1924925Z           "complete": true,
2026-06-21T01:51:38.1925010Z           "evidence": [
2026-06-21T01:51:38.1925096Z             {
2026-06-21T01:51:38.1925211Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1925301Z               "line": 391
2026-06-21T01:51:38.1925382Z             },
2026-06-21T01:51:38.1925469Z             {
2026-06-21T01:51:38.1925573Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.1925658Z               "line": 343
2026-06-21T01:51:38.1925745Z             },
2026-06-21T01:51:38.1925831Z             {
2026-06-21T01:51:38.1925930Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1926016Z               "line": 1750
2026-06-21T01:51:38.1926103Z             },
2026-06-21T01:51:38.1926193Z             {
2026-06-21T01:51:38.1926293Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1926385Z               "line": 3191
2026-06-21T01:51:38.1926465Z             }
2026-06-21T01:51:38.1926555Z           ]
2026-06-21T01:51:38.1926631Z         },
2026-06-21T01:51:38.1926719Z         "int": {
2026-06-21T01:51:38.1926818Z           "complete": true,
2026-06-21T01:51:38.1926902Z           "evidence": [
2026-06-21T01:51:38.1926988Z             {
2026-06-21T01:51:38.1927121Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T01:51:38.1927215Z               "line": 353
2026-06-21T01:51:38.1927295Z             },
2026-06-21T01:51:38.1927377Z             {
2026-06-21T01:51:38.1927520Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-21T01:51:38.1927605Z               "line": 23
2026-06-21T01:51:38.1927692Z             }
2026-06-21T01:51:38.1927773Z           ]
2026-06-21T01:51:38.1927853Z         },
2026-06-21T01:51:38.1927934Z         "unit": {
2026-06-21T01:51:38.1928031Z           "complete": true,
2026-06-21T01:51:38.1928111Z           "evidence": [
2026-06-21T01:51:38.1928192Z             {
2026-06-21T01:51:38.1928298Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.1928378Z               "line": 743
2026-06-21T01:51:38.1928464Z             },
2026-06-21T01:51:38.1928544Z             {
2026-06-21T01:51:38.1928651Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.1928736Z               "line": 7863
2026-06-21T01:51:38.1928817Z             }
2026-06-21T01:51:38.1928898Z           ]
2026-06-21T01:51:38.1929070Z         }
2026-06-21T01:51:38.1929160Z       }
2026-06-21T01:51:38.1929237Z     },
2026-06-21T01:51:38.1929323Z     {
2026-06-21T01:51:38.1929441Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-21T01:51:38.1932784Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-21T01:51:38.1932994Z       "requiredStages": [
2026-06-21T01:51:38.1933070Z         "impl",
2026-06-21T01:51:38.1933153Z         "unit",
2026-06-21T01:51:38.1933233Z         "int"
2026-06-21T01:51:38.1933313Z       ],
2026-06-21T01:51:38.1933395Z       "stages": {
2026-06-21T01:51:38.1933472Z         "doc": {
2026-06-21T01:51:38.1933562Z           "complete": false,
2026-06-21T01:51:38.1933656Z           "evidence": []
2026-06-21T01:51:38.1933734Z         },
2026-06-21T01:51:38.1933820Z         "impl": {
2026-06-21T01:51:38.1933915Z           "complete": true,
2026-06-21T01:51:38.1933995Z           "evidence": [
2026-06-21T01:51:38.1934078Z             {
2026-06-21T01:51:38.1934195Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1934276Z               "line": 64
2026-06-21T01:51:38.1934359Z             },
2026-06-21T01:51:38.1934445Z             {
2026-06-21T01:51:38.1934568Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1934659Z               "line": 78
2026-06-21T01:51:38.1934736Z             },
2026-06-21T01:51:38.1934815Z             {
2026-06-21T01:51:38.1934929Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1935015Z               "line": 170
2026-06-21T01:51:38.1935096Z             },
2026-06-21T01:51:38.1935179Z             {
2026-06-21T01:51:38.1935283Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1935366Z               "line": 185
2026-06-21T01:51:38.1935447Z             },
2026-06-21T01:51:38.1935532Z             {
2026-06-21T01:51:38.1935637Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1935719Z               "line": 195
2026-06-21T01:51:38.1935809Z             },
2026-06-21T01:51:38.1935885Z             {
2026-06-21T01:51:38.1936005Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1936090Z               "line": 205
2026-06-21T01:51:38.1936180Z             },
2026-06-21T01:51:38.1936262Z             {
2026-06-21T01:51:38.1936381Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1936476Z               "line": 294
2026-06-21T01:51:38.1936557Z             },
2026-06-21T01:51:38.1936645Z             {
2026-06-21T01:51:38.1936753Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1936834Z               "line": 308
2026-06-21T01:51:38.1936911Z             },
2026-06-21T01:51:38.1936992Z             {
2026-06-21T01:51:38.1937105Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1937187Z               "line": 377
2026-06-21T01:51:38.1937269Z             },
2026-06-21T01:51:38.1937350Z             {
2026-06-21T01:51:38.1937463Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1937548Z               "line": 437
2026-06-21T01:51:38.1937709Z             },
2026-06-21T01:51:38.1937784Z             {
2026-06-21T01:51:38.1937903Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1938061Z               "line": 455
2026-06-21T01:51:38.1938146Z             }
2026-06-21T01:51:38.1938228Z           ]
2026-06-21T01:51:38.1938310Z         },
2026-06-21T01:51:38.1938390Z         "int": {
2026-06-21T01:51:38.1938475Z           "complete": true,
2026-06-21T01:51:38.1938563Z           "evidence": [
2026-06-21T01:51:38.1938638Z             {
2026-06-21T01:51:38.1938771Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T01:51:38.1938848Z               "line": 45
2026-06-21T01:51:38.1938934Z             },
2026-06-21T01:51:38.1939109Z             {
2026-06-21T01:51:38.1939239Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T01:51:38.1939315Z               "line": 354
2026-06-21T01:51:38.1939401Z             },
2026-06-21T01:51:38.1939477Z             {
2026-06-21T01:51:38.1939625Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T01:51:38.1939715Z               "line": 31
2026-06-21T01:51:38.1939797Z             }
2026-06-21T01:51:38.1939883Z           ]
2026-06-21T01:51:38.1939953Z         },
2026-06-21T01:51:38.1940040Z         "unit": {
2026-06-21T01:51:38.1940122Z           "complete": true,
2026-06-21T01:51:38.1940212Z           "evidence": [
2026-06-21T01:51:38.1940301Z             {
2026-06-21T01:51:38.1940410Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.1940496Z               "line": 727
2026-06-21T01:51:38.1940579Z             }
2026-06-21T01:51:38.1940668Z           ]
2026-06-21T01:51:38.1940744Z         }
2026-06-21T01:51:38.1940826Z       }
2026-06-21T01:51:38.1940912Z     },
2026-06-21T01:51:38.1940992Z     {
2026-06-21T01:51:38.1941098Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-21T01:51:38.1941302Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-21T01:51:38.1941402Z       "requiredStages": [
2026-06-21T01:51:38.1941484Z         "impl",
2026-06-21T01:51:38.1941579Z         "unit"
2026-06-21T01:51:38.1941659Z       ],
2026-06-21T01:51:38.1941737Z       "stages": {
2026-06-21T01:51:38.1941823Z         "doc": {
2026-06-21T01:51:38.1941913Z           "complete": false,
2026-06-21T01:51:38.1941998Z           "evidence": []
2026-06-21T01:51:38.1942071Z         },
2026-06-21T01:51:38.1942161Z         "impl": {
2026-06-21T01:51:38.1942261Z           "complete": true,
2026-06-21T01:51:38.1942342Z           "evidence": [
2026-06-21T01:51:38.1942429Z             {
2026-06-21T01:51:38.1942541Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T01:51:38.1942632Z               "line": 14
2026-06-21T01:51:38.1942713Z             },
2026-06-21T01:51:38.1942803Z             {
2026-06-21T01:51:38.1942915Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:51:38.1943001Z               "line": 566
2026-06-21T01:51:38.1943092Z             }
2026-06-21T01:51:38.1943173Z           ]
2026-06-21T01:51:38.1943263Z         },
2026-06-21T01:51:38.1943350Z         "int": {
2026-06-21T01:51:38.1943445Z           "complete": false,
2026-06-21T01:51:38.1943530Z           "evidence": []
2026-06-21T01:51:38.1943616Z         },
2026-06-21T01:51:38.1943693Z         "unit": {
2026-06-21T01:51:38.1943764Z           "complete": true,
2026-06-21T01:51:38.1943854Z           "evidence": [
2026-06-21T01:51:38.1943940Z             {
2026-06-21T01:51:38.1944046Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T01:51:38.1944141Z               "line": 130
2026-06-21T01:51:38.1944221Z             },
2026-06-21T01:51:38.1944304Z             {
2026-06-21T01:51:38.1944408Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T01:51:38.1944503Z               "line": 138
2026-06-21T01:51:38.1944570Z             },
2026-06-21T01:51:38.1944662Z             {
2026-06-21T01:51:38.1944760Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T01:51:38.1944957Z               "line": 146
2026-06-21T01:51:38.1945042Z             },
2026-06-21T01:51:38.1945209Z             {
2026-06-21T01:51:38.1945320Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T01:51:38.1945408Z               "line": 154
2026-06-21T01:51:38.1945494Z             },
2026-06-21T01:51:38.1945580Z             {
2026-06-21T01:51:38.1945679Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T01:51:38.1945763Z               "line": 162
2026-06-21T01:51:38.1945844Z             },
2026-06-21T01:51:38.1945930Z             {
2026-06-21T01:51:38.1946031Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T01:51:38.1946116Z               "line": 170
2026-06-21T01:51:38.1946202Z             }
2026-06-21T01:51:38.1946284Z           ]
2026-06-21T01:51:38.1946369Z         }
2026-06-21T01:51:38.1946454Z       }
2026-06-21T01:51:38.1946536Z     },
2026-06-21T01:51:38.1946617Z     {
2026-06-21T01:51:38.1946731Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-21T01:51:38.1947604Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-21T01:51:38.1947694Z       "requiredStages": [
2026-06-21T01:51:38.1947776Z         "impl",
2026-06-21T01:51:38.1947858Z         "unit"
2026-06-21T01:51:38.1947980Z       ],
2026-06-21T01:51:38.1948103Z       "stages": {
2026-06-21T01:51:38.1948231Z         "doc": {
2026-06-21T01:51:38.1948321Z           "complete": false,
2026-06-21T01:51:38.1948401Z           "evidence": []
2026-06-21T01:51:38.1948483Z         },
2026-06-21T01:51:38.1948570Z         "impl": {
2026-06-21T01:51:38.1948654Z           "complete": true,
2026-06-21T01:51:38.1948745Z           "evidence": [
2026-06-21T01:51:38.1948822Z             {
2026-06-21T01:51:38.1949059Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T01:51:38.1949151Z               "line": 34
2026-06-21T01:51:38.1949241Z             }
2026-06-21T01:51:38.1949326Z           ]
2026-06-21T01:51:38.1949418Z         },
2026-06-21T01:51:38.1949494Z         "int": {
2026-06-21T01:51:38.1949584Z           "complete": false,
2026-06-21T01:51:38.1949674Z           "evidence": []
2026-06-21T01:51:38.1949757Z         },
2026-06-21T01:51:38.1949847Z         "unit": {
2026-06-21T01:51:38.1949932Z           "complete": true,
2026-06-21T01:51:38.1950023Z           "evidence": [
2026-06-21T01:51:38.1950105Z             {
2026-06-21T01:51:38.1950237Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T01:51:38.1950323Z               "line": 188
2026-06-21T01:51:38.1950406Z             },
2026-06-21T01:51:38.1950495Z             {
2026-06-21T01:51:38.1950628Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T01:51:38.1950721Z               "line": 200
2026-06-21T01:51:38.1950810Z             },
2026-06-21T01:51:38.1950880Z             {
2026-06-21T01:51:38.1951013Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T01:51:38.1951100Z               "line": 211
2026-06-21T01:51:38.1951185Z             },
2026-06-21T01:51:38.1951261Z             {
2026-06-21T01:51:38.1951396Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T01:51:38.1951482Z               "line": 253
2026-06-21T01:51:38.1951566Z             },
2026-06-21T01:51:38.1951653Z             {
2026-06-21T01:51:38.1951782Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T01:51:38.1951867Z               "line": 277
2026-06-21T01:51:38.1951948Z             },
2026-06-21T01:51:38.1952030Z             {
2026-06-21T01:51:38.1952163Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T01:51:38.1952248Z               "line": 300
2026-06-21T01:51:38.1952331Z             },
2026-06-21T01:51:38.1952411Z             {
2026-06-21T01:51:38.1952702Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T01:51:38.1952888Z               "line": 316
2026-06-21T01:51:38.1952970Z             }
2026-06-21T01:51:38.1953059Z           ]
2026-06-21T01:51:38.1953139Z         }
2026-06-21T01:51:38.1953224Z       }
2026-06-21T01:51:38.1953296Z     },
2026-06-21T01:51:38.1953381Z     {
2026-06-21T01:51:38.1953490Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-21T01:51:38.1954000Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-21T01:51:38.1954100Z       "requiredStages": [
2026-06-21T01:51:38.1954181Z         "impl",
2026-06-21T01:51:38.1954263Z         "unit"
2026-06-21T01:51:38.1954343Z       ],
2026-06-21T01:51:38.1954433Z       "stages": {
2026-06-21T01:51:38.1954515Z         "doc": {
2026-06-21T01:51:38.1954597Z           "complete": false,
2026-06-21T01:51:38.1954697Z           "evidence": []
2026-06-21T01:51:38.1954786Z         },
2026-06-21T01:51:38.1954873Z         "impl": {
2026-06-21T01:51:38.1954959Z           "complete": true,
2026-06-21T01:51:38.1955044Z           "evidence": [
2026-06-21T01:51:38.1955125Z             {
2026-06-21T01:51:38.1955231Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.1955320Z               "line": 29
2026-06-21T01:51:38.1955397Z             },
2026-06-21T01:51:38.1955484Z             {
2026-06-21T01:51:38.1955584Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.1955678Z               "line": 174
2026-06-21T01:51:38.1955765Z             },
2026-06-21T01:51:38.1955842Z             {
2026-06-21T01:51:38.1955960Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.1956045Z               "line": 194
2026-06-21T01:51:38.1956135Z             },
2026-06-21T01:51:38.1956216Z             {
2026-06-21T01:51:38.1956333Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.1956423Z               "line": 222
2026-06-21T01:51:38.1956510Z             }
2026-06-21T01:51:38.1956601Z           ]
2026-06-21T01:51:38.1956685Z         },
2026-06-21T01:51:38.1956777Z         "int": {
2026-06-21T01:51:38.1956867Z           "complete": false,
2026-06-21T01:51:38.1956967Z           "evidence": []
2026-06-21T01:51:38.1957057Z         },
2026-06-21T01:51:38.1957140Z         "unit": {
2026-06-21T01:51:38.1957235Z           "complete": true,
2026-06-21T01:51:38.1957324Z           "evidence": [
2026-06-21T01:51:38.1957411Z             {
2026-06-21T01:51:38.1957520Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.1957611Z               "line": 329
2026-06-21T01:51:38.1957701Z             },
2026-06-21T01:51:38.1957774Z             {
2026-06-21T01:51:38.1957882Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.1957968Z               "line": 344
2026-06-21T01:51:38.1958055Z             },
2026-06-21T01:51:38.1958141Z             {
2026-06-21T01:51:38.1958255Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.1958351Z               "line": 417
2026-06-21T01:51:38.1958433Z             },
2026-06-21T01:51:38.1958516Z             {
2026-06-21T01:51:38.1958620Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.1958711Z               "line": 433
2026-06-21T01:51:38.1958792Z             },
2026-06-21T01:51:38.1958881Z             {
2026-06-21T01:51:38.1959096Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.1959176Z               "line": 492
2026-06-21T01:51:38.1959262Z             },
2026-06-21T01:51:38.1959348Z             {
2026-06-21T01:51:38.1959468Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.1959562Z               "line": 506
2026-06-21T01:51:38.1959644Z             },
2026-06-21T01:51:38.1959725Z             {
2026-06-21T01:51:38.1959830Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.1960031Z               "line": 517
2026-06-21T01:51:38.1960116Z             },
2026-06-21T01:51:38.1960293Z             {
2026-06-21T01:51:38.1960402Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.1960492Z               "line": 528
2026-06-21T01:51:38.1960573Z             }
2026-06-21T01:51:38.1960651Z           ]
2026-06-21T01:51:38.1960740Z         }
2026-06-21T01:51:38.1960821Z       }
2026-06-21T01:51:38.1960908Z     },
2026-06-21T01:51:38.1960990Z     {
2026-06-21T01:51:38.1961117Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-21T01:51:38.1961774Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-21T01:51:38.1961860Z       "requiredStages": [
2026-06-21T01:51:38.1961946Z         "impl",
2026-06-21T01:51:38.1962018Z         "unit"
2026-06-21T01:51:38.1962112Z       ],
2026-06-21T01:51:38.1962194Z       "stages": {
2026-06-21T01:51:38.1962275Z         "doc": {
2026-06-21T01:51:38.1962361Z           "complete": false,
2026-06-21T01:51:38.1962441Z           "evidence": []
2026-06-21T01:51:38.1962527Z         },
2026-06-21T01:51:38.1962599Z         "impl": {
2026-06-21T01:51:38.1962694Z           "complete": true,
2026-06-21T01:51:38.1962784Z           "evidence": [
2026-06-21T01:51:38.1962857Z             {
2026-06-21T01:51:38.1962995Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:51:38.1963076Z               "line": 27
2026-06-21T01:51:38.1963162Z             },
2026-06-21T01:51:38.1963248Z             {
2026-06-21T01:51:38.1963381Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:51:38.1963467Z               "line": 110
2026-06-21T01:51:38.1963544Z             },
2026-06-21T01:51:38.1963624Z             {
2026-06-21T01:51:38.1963747Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:51:38.1963833Z               "line": 153
2026-06-21T01:51:38.1963918Z             },
2026-06-21T01:51:38.1964003Z             {
2026-06-21T01:51:38.1964131Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:51:38.1964213Z               "line": 182
2026-06-21T01:51:38.1964298Z             },
2026-06-21T01:51:38.1964378Z             {
2026-06-21T01:51:38.1964528Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T01:51:38.1964613Z               "line": 31
2026-06-21T01:51:38.1964693Z             },
2026-06-21T01:51:38.1964780Z             {
2026-06-21T01:51:38.1964908Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T01:51:38.1964994Z               "line": 113
2026-06-21T01:51:38.1965080Z             },
2026-06-21T01:51:38.1965166Z             {
2026-06-21T01:51:38.1965299Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T01:51:38.1965385Z               "line": 138
2026-06-21T01:51:38.1965476Z             }
2026-06-21T01:51:38.1965557Z           ]
2026-06-21T01:51:38.1965642Z         },
2026-06-21T01:51:38.1965719Z         "int": {
2026-06-21T01:51:38.1965815Z           "complete": false,
2026-06-21T01:51:38.1965904Z           "evidence": []
2026-06-21T01:51:38.1965980Z         },
2026-06-21T01:51:38.1966068Z         "unit": {
2026-06-21T01:51:38.1966149Z           "complete": true,
2026-06-21T01:51:38.1966243Z           "evidence": [
2026-06-21T01:51:38.1966330Z             {
2026-06-21T01:51:38.1966454Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:51:38.1966548Z               "line": 261
2026-06-21T01:51:38.1966623Z             },
2026-06-21T01:51:38.1966710Z             {
2026-06-21T01:51:38.1966827Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:51:38.1966931Z               "line": 276
2026-06-21T01:51:38.1967013Z             },
2026-06-21T01:51:38.1967099Z             {
2026-06-21T01:51:38.1967312Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:51:38.1967400Z               "line": 293
2026-06-21T01:51:38.1967565Z             },
2026-06-21T01:51:38.1967647Z             {
2026-06-21T01:51:38.1967775Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:51:38.1967861Z               "line": 310
2026-06-21T01:51:38.1967947Z             },
2026-06-21T01:51:38.1968038Z             {
2026-06-21T01:51:38.1968157Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:51:38.1972057Z               "line": 327
2026-06-21T01:51:38.1972153Z             },
2026-06-21T01:51:38.1972249Z             {
2026-06-21T01:51:38.1972391Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:51:38.1972487Z               "line": 366
2026-06-21T01:51:38.1972573Z             },
2026-06-21T01:51:38.1972658Z             {
2026-06-21T01:51:38.1972812Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T01:51:38.1972916Z               "line": 179
2026-06-21T01:51:38.1972997Z             },
2026-06-21T01:51:38.1973074Z             {
2026-06-21T01:51:38.1973217Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T01:51:38.1973311Z               "line": 194
2026-06-21T01:51:38.1973388Z             },
2026-06-21T01:51:38.1973479Z             {
2026-06-21T01:51:38.1973607Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T01:51:38.1973693Z               "line": 204
2026-06-21T01:51:38.1973780Z             },
2026-06-21T01:51:38.1973855Z             {
2026-06-21T01:51:38.1973989Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T01:51:38.1974076Z               "line": 259
2026-06-21T01:51:38.1974161Z             },
2026-06-21T01:51:38.1974232Z             {
2026-06-21T01:51:38.1974364Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T01:51:38.1974445Z               "line": 269
2026-06-21T01:51:38.1974529Z             },
2026-06-21T01:51:38.1974619Z             {
2026-06-21T01:51:38.1974748Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T01:51:38.1974835Z               "line": 283
2026-06-21T01:51:38.1974920Z             }
2026-06-21T01:51:38.1975005Z           ]
2026-06-21T01:51:38.1975088Z         }
2026-06-21T01:51:38.1975168Z       }
2026-06-21T01:51:38.1975253Z     },
2026-06-21T01:51:38.1975335Z     {
2026-06-21T01:51:38.1975445Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-21T01:51:38.1975626Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-21T01:51:38.1975722Z       "requiredStages": [],
2026-06-21T01:51:38.1975807Z       "stages": {
2026-06-21T01:51:38.1975888Z         "doc": {
2026-06-21T01:51:38.1975984Z           "complete": false,
2026-06-21T01:51:38.1976074Z           "evidence": []
2026-06-21T01:51:38.1976160Z         },
2026-06-21T01:51:38.1976240Z         "impl": {
2026-06-21T01:51:38.1976346Z           "complete": false,
2026-06-21T01:51:38.1976441Z           "evidence": []
2026-06-21T01:51:38.1976517Z         },
2026-06-21T01:51:38.1976614Z         "int": {
2026-06-21T01:51:38.1976690Z           "complete": false,
2026-06-21T01:51:38.1976779Z           "evidence": []
2026-06-21T01:51:38.1976860Z         },
2026-06-21T01:51:38.1976948Z         "unit": {
2026-06-21T01:51:38.1977038Z           "complete": false,
2026-06-21T01:51:38.1977117Z           "evidence": []
2026-06-21T01:51:38.1977198Z         }
2026-06-21T01:51:38.1977275Z       }
2026-06-21T01:51:38.1977359Z     },
2026-06-21T01:51:38.1977435Z     {
2026-06-21T01:51:38.1977563Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-21T01:51:38.1978431Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-21T01:51:38.1978678Z       "requiredStages": [
2026-06-21T01:51:38.1978759Z         "impl",
2026-06-21T01:51:38.1978841Z         "unit"
2026-06-21T01:51:38.1979127Z       ],
2026-06-21T01:51:38.1979214Z       "stages": {
2026-06-21T01:51:38.1979294Z         "doc": {
2026-06-21T01:51:38.1979389Z           "complete": false,
2026-06-21T01:51:38.1979476Z           "evidence": []
2026-06-21T01:51:38.1979562Z         },
2026-06-21T01:51:38.1979637Z         "impl": {
2026-06-21T01:51:38.1979732Z           "complete": true,
2026-06-21T01:51:38.1979822Z           "evidence": [
2026-06-21T01:51:38.1979903Z             {
2026-06-21T01:51:38.1980034Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:51:38.1980115Z               "line": 26
2026-06-21T01:51:38.1980207Z             },
2026-06-21T01:51:38.1980288Z             {
2026-06-21T01:51:38.1980415Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:51:38.1980507Z               "line": 95
2026-06-21T01:51:38.1980588Z             },
2026-06-21T01:51:38.1980677Z             {
2026-06-21T01:51:38.1980788Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:51:38.1980878Z               "line": 166
2026-06-21T01:51:38.1980960Z             },
2026-06-21T01:51:38.1981045Z             {
2026-06-21T01:51:38.1981161Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T01:51:38.1981236Z               "line": 19
2026-06-21T01:51:38.1981321Z             },
2026-06-21T01:51:38.1981403Z             {
2026-06-21T01:51:38.1981513Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T01:51:38.1981599Z               "line": 50
2026-06-21T01:51:38.1981689Z             },
2026-06-21T01:51:38.1981771Z             {
2026-06-21T01:51:38.1981884Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T01:51:38.1981965Z               "line": 18
2026-06-21T01:51:38.1982048Z             },
2026-06-21T01:51:38.1982138Z             {
2026-06-21T01:51:38.1982242Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T01:51:38.1982333Z               "line": 71
2026-06-21T01:51:38.1982420Z             },
2026-06-21T01:51:38.1982504Z             {
2026-06-21T01:51:38.1982618Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.1982689Z               "line": 87
2026-06-21T01:51:38.1982771Z             }
2026-06-21T01:51:38.1982847Z           ]
2026-06-21T01:51:38.1982927Z         },
2026-06-21T01:51:38.1983014Z         "int": {
2026-06-21T01:51:38.1983100Z           "complete": false,
2026-06-21T01:51:38.1983190Z           "evidence": []
2026-06-21T01:51:38.1983271Z         },
2026-06-21T01:51:38.1983353Z         "unit": {
2026-06-21T01:51:38.1983438Z           "complete": true,
2026-06-21T01:51:38.1983523Z           "evidence": [
2026-06-21T01:51:38.1983604Z             {
2026-06-21T01:51:38.1983715Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:51:38.1983800Z               "line": 289
2026-06-21T01:51:38.1983886Z             },
2026-06-21T01:51:38.1983963Z             {
2026-06-21T01:51:38.1984082Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:51:38.1984172Z               "line": 314
2026-06-21T01:51:38.1984263Z             },
2026-06-21T01:51:38.1984340Z             {
2026-06-21T01:51:38.1984458Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:51:38.1984544Z               "line": 350
2026-06-21T01:51:38.1984621Z             },
2026-06-21T01:51:38.1984707Z             {
2026-06-21T01:51:38.1984815Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:51:38.1984900Z               "line": 418
2026-06-21T01:51:38.1984977Z             },
2026-06-21T01:51:38.1985061Z             {
2026-06-21T01:51:38.1985174Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:51:38.1985265Z               "line": 429
2026-06-21T01:51:38.1985352Z             },
2026-06-21T01:51:38.1985432Z             {
2026-06-21T01:51:38.1985532Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:51:38.1985728Z               "line": 460
2026-06-21T01:51:38.1985814Z             },
2026-06-21T01:51:38.1985895Z             {
2026-06-21T01:51:38.1986124Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:51:38.1986215Z               "line": 471
2026-06-21T01:51:38.1986296Z             },
2026-06-21T01:51:38.1986381Z             {
2026-06-21T01:51:38.1986496Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T01:51:38.1986587Z               "line": 77
2026-06-21T01:51:38.1986667Z             },
2026-06-21T01:51:38.1986748Z             {
2026-06-21T01:51:38.1986854Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T01:51:38.1986940Z               "line": 97
2026-06-21T01:51:38.1987025Z             },
2026-06-21T01:51:38.1987106Z             {
2026-06-21T01:51:38.1987222Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T01:51:38.1987306Z               "line": 112
2026-06-21T01:51:38.1987397Z             },
2026-06-21T01:51:38.1987479Z             {
2026-06-21T01:51:38.1987579Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T01:51:38.1987668Z               "line": 123
2026-06-21T01:51:38.1987753Z             },
2026-06-21T01:51:38.1987844Z             {
2026-06-21T01:51:38.1987943Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T01:51:38.1988032Z               "line": 130
2026-06-21T01:51:38.1988113Z             },
2026-06-21T01:51:38.1988195Z             {
2026-06-21T01:51:38.1988314Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T01:51:38.1988394Z               "line": 145
2026-06-21T01:51:38.1988477Z             },
2026-06-21T01:51:38.1988558Z             {
2026-06-21T01:51:38.1988662Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T01:51:38.1988752Z               "line": 115
2026-06-21T01:51:38.1988825Z             },
2026-06-21T01:51:38.1988905Z             {
2026-06-21T01:51:38.1989096Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T01:51:38.1989182Z               "line": 130
2026-06-21T01:51:38.1989263Z             },
2026-06-21T01:51:38.1989343Z             {
2026-06-21T01:51:38.1989464Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.1989544Z               "line": 428
2026-06-21T01:51:38.1989625Z             }
2026-06-21T01:51:38.1989707Z           ]
2026-06-21T01:51:38.1989788Z         }
2026-06-21T01:51:38.1989873Z       }
2026-06-21T01:51:38.1989954Z     },
2026-06-21T01:51:38.1990036Z     {
2026-06-21T01:51:38.1990160Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-21T01:51:38.1996284Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-21T01:51:38.1996603Z       "requiredStages": [
2026-06-21T01:51:38.1996703Z         "impl",
2026-06-21T01:51:38.1996780Z         "unit",
2026-06-21T01:51:38.1996851Z         "int"
2026-06-21T01:51:38.1996937Z       ],
2026-06-21T01:51:38.1997017Z       "stages": {
2026-06-21T01:51:38.1997104Z         "doc": {
2026-06-21T01:51:38.1997199Z           "complete": false,
2026-06-21T01:51:38.1997294Z           "evidence": []
2026-06-21T01:51:38.1997385Z         },
2026-06-21T01:51:38.1997472Z         "impl": {
2026-06-21T01:51:38.1997566Z           "complete": true,
2026-06-21T01:51:38.1997652Z           "evidence": [
2026-06-21T01:51:38.1997734Z             {
2026-06-21T01:51:38.1997847Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.1997938Z               "line": 895
2026-06-21T01:51:38.1998020Z             },
2026-06-21T01:51:38.1998097Z             {
2026-06-21T01:51:38.1998214Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.1998299Z               "line": 322
2026-06-21T01:51:38.1998375Z             }
2026-06-21T01:51:38.1998461Z           ]
2026-06-21T01:51:38.1998545Z         },
2026-06-21T01:51:38.1998630Z         "int": {
2026-06-21T01:51:38.1998707Z           "complete": true,
2026-06-21T01:51:38.1998803Z           "evidence": [
2026-06-21T01:51:38.1998879Z             {
2026-06-21T01:51:38.1999127Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T01:51:38.1999217Z               "line": 1909
2026-06-21T01:51:38.1999303Z             }
2026-06-21T01:51:38.1999389Z           ]
2026-06-21T01:51:38.1999470Z         },
2026-06-21T01:51:38.1999551Z         "unit": {
2026-06-21T01:51:38.1999642Z           "complete": true,
2026-06-21T01:51:38.1999723Z           "evidence": [
2026-06-21T01:51:38.1999804Z             {
2026-06-21T01:51:38.1999908Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.2000001Z               "line": 2376
2026-06-21T01:51:38.2000085Z             },
2026-06-21T01:51:38.2000171Z             {
2026-06-21T01:51:38.2000281Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.2000372Z               "line": 2440
2026-06-21T01:51:38.2000457Z             },
2026-06-21T01:51:38.2000543Z             {
2026-06-21T01:51:38.2000654Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.2000743Z               "line": 2495
2026-06-21T01:51:38.2000828Z             }
2026-06-21T01:51:38.2000913Z           ]
2026-06-21T01:51:38.2000999Z         }
2026-06-21T01:51:38.2001074Z       }
2026-06-21T01:51:38.2001154Z     },
2026-06-21T01:51:38.2001240Z     {
2026-06-21T01:51:38.2001351Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-21T01:51:38.2002175Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-21T01:51:38.2002271Z       "requiredStages": [
2026-06-21T01:51:38.2002351Z         "doc",
2026-06-21T01:51:38.2002437Z         "impl",
2026-06-21T01:51:38.2002518Z         "unit"
2026-06-21T01:51:38.2002605Z       ],
2026-06-21T01:51:38.2002685Z       "stages": {
2026-06-21T01:51:38.2002766Z         "doc": {
2026-06-21T01:51:38.2002971Z           "complete": true,
2026-06-21T01:51:38.2003053Z           "evidence": [
2026-06-21T01:51:38.2003139Z             {
2026-06-21T01:51:38.2003338Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.2003424Z               "line": 374
2026-06-21T01:51:38.2003492Z             }
2026-06-21T01:51:38.2003578Z           ]
2026-06-21T01:51:38.2003657Z         },
2026-06-21T01:51:38.2003747Z         "impl": {
2026-06-21T01:51:38.2003843Z           "complete": true,
2026-06-21T01:51:38.2003925Z           "evidence": [
2026-06-21T01:51:38.2004005Z             {
2026-06-21T01:51:38.2004119Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.2004211Z               "line": 200
2026-06-21T01:51:38.2004292Z             },
2026-06-21T01:51:38.2004372Z             {
2026-06-21T01:51:38.2004487Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.2004572Z               "line": 304
2026-06-21T01:51:38.2004658Z             },
2026-06-21T01:51:38.2004739Z             {
2026-06-21T01:51:38.2004850Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.2004935Z               "line": 562
2026-06-21T01:51:38.2005010Z             },
2026-06-21T01:51:38.2005093Z             {
2026-06-21T01:51:38.2005198Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.2005283Z               "line": 577
2026-06-21T01:51:38.2005364Z             },
2026-06-21T01:51:38.2005446Z             {
2026-06-21T01:51:38.2005550Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.2005631Z               "line": 1224
2026-06-21T01:51:38.2005722Z             },
2026-06-21T01:51:38.2005799Z             {
2026-06-21T01:51:38.2005926Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.2006006Z               "line": 443
2026-06-21T01:51:38.2006092Z             },
2026-06-21T01:51:38.2006173Z             {
2026-06-21T01:51:38.2006291Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.2006372Z               "line": 590
2026-06-21T01:51:38.2006453Z             },
2026-06-21T01:51:38.2006534Z             {
2026-06-21T01:51:38.2006652Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.2006749Z               "line": 731
2026-06-21T01:51:38.2006830Z             }
2026-06-21T01:51:38.2006915Z           ]
2026-06-21T01:51:38.2007001Z         },
2026-06-21T01:51:38.2007083Z         "int": {
2026-06-21T01:51:38.2007178Z           "complete": false,
2026-06-21T01:51:38.2007268Z           "evidence": []
2026-06-21T01:51:38.2007355Z         },
2026-06-21T01:51:38.2007435Z         "unit": {
2026-06-21T01:51:38.2007530Z           "complete": true,
2026-06-21T01:51:38.2007620Z           "evidence": [
2026-06-21T01:51:38.2007703Z             {
2026-06-21T01:51:38.2007822Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.2007897Z               "line": 1155
2026-06-21T01:51:38.2007974Z             },
2026-06-21T01:51:38.2008046Z             {
2026-06-21T01:51:38.2008179Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-21T01:51:38.2008265Z               "line": 30
2026-06-21T01:51:38.2008342Z             }
2026-06-21T01:51:38.2008426Z           ]
2026-06-21T01:51:38.2008503Z         }
2026-06-21T01:51:38.2008590Z       }
2026-06-21T01:51:38.2008662Z     },
2026-06-21T01:51:38.2008746Z     {
2026-06-21T01:51:38.2008868Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-21T01:51:38.2012297Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-21T01:51:38.2012663Z       "requiredStages": [
2026-06-21T01:51:38.2012740Z         "impl",
2026-06-21T01:51:38.2012826Z         "unit",
2026-06-21T01:51:38.2012907Z         "int"
2026-06-21T01:51:38.2012988Z       ],
2026-06-21T01:51:38.2013074Z       "stages": {
2026-06-21T01:51:38.2013156Z         "doc": {
2026-06-21T01:51:38.2013241Z           "complete": false,
2026-06-21T01:51:38.2013331Z           "evidence": []
2026-06-21T01:51:38.2013413Z         },
2026-06-21T01:51:38.2013503Z         "impl": {
2026-06-21T01:51:38.2013598Z           "complete": true,
2026-06-21T01:51:38.2013704Z           "evidence": [
2026-06-21T01:51:38.2013842Z             {
2026-06-21T01:51:38.2013947Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2014038Z               "line": 718
2026-06-21T01:51:38.2014119Z             },
2026-06-21T01:51:38.2014203Z             {
2026-06-21T01:51:38.2014302Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2014384Z               "line": 887
2026-06-21T01:51:38.2014470Z             }
2026-06-21T01:51:38.2014556Z           ]
2026-06-21T01:51:38.2014636Z         },
2026-06-21T01:51:38.2014723Z         "int": {
2026-06-21T01:51:38.2014804Z           "complete": true,
2026-06-21T01:51:38.2014889Z           "evidence": [
2026-06-21T01:51:38.2014965Z             {
2026-06-21T01:51:38.2015091Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T01:51:38.2015176Z               "line": 403
2026-06-21T01:51:38.2015261Z             }
2026-06-21T01:51:38.2015348Z           ]
2026-06-21T01:51:38.2015424Z         },
2026-06-21T01:51:38.2015515Z         "unit": {
2026-06-21T01:51:38.2015600Z           "complete": true,
2026-06-21T01:51:38.2015682Z           "evidence": [
2026-06-21T01:51:38.2015758Z             {
2026-06-21T01:51:38.2015862Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2015943Z               "line": 1072
2026-06-21T01:51:38.2016025Z             },
2026-06-21T01:51:38.2016110Z             {
2026-06-21T01:51:38.2016200Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2016287Z               "line": 1096
2026-06-21T01:51:38.2016378Z             }
2026-06-21T01:51:38.2016457Z           ]
2026-06-21T01:51:38.2016543Z         }
2026-06-21T01:51:38.2016624Z       }
2026-06-21T01:51:38.2016710Z     },
2026-06-21T01:51:38.2016784Z     {
2026-06-21T01:51:38.2016907Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-21T01:51:38.2020704Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-21T01:51:38.2021024Z       "requiredStages": [
2026-06-21T01:51:38.2021111Z         "impl",
2026-06-21T01:51:38.2021182Z         "unit",
2026-06-21T01:51:38.2021267Z         "int"
2026-06-21T01:51:38.2021349Z       ],
2026-06-21T01:51:38.2021435Z       "stages": {
2026-06-21T01:51:38.2021516Z         "doc": {
2026-06-21T01:51:38.2021606Z           "complete": false,
2026-06-21T01:51:38.2021697Z           "evidence": []
2026-06-21T01:51:38.2021774Z         },
2026-06-21T01:51:38.2021859Z         "impl": {
2026-06-21T01:51:38.2021939Z           "complete": true,
2026-06-21T01:51:38.2022024Z           "evidence": [
2026-06-21T01:51:38.2022115Z             {
2026-06-21T01:51:38.2022222Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2022317Z               "line": 1417
2026-06-21T01:51:38.2022394Z             },
2026-06-21T01:51:38.2022476Z             {
2026-06-21T01:51:38.2022575Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2022666Z               "line": 1441
2026-06-21T01:51:38.2022752Z             }
2026-06-21T01:51:38.2022833Z           ]
2026-06-21T01:51:38.2022918Z         },
2026-06-21T01:51:38.2023000Z         "int": {
2026-06-21T01:51:38.2023090Z           "complete": true,
2026-06-21T01:51:38.2023171Z           "evidence": [
2026-06-21T01:51:38.2023252Z             {
2026-06-21T01:51:38.2023387Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T01:51:38.2023472Z               "line": 329
2026-06-21T01:51:38.2023557Z             }
2026-06-21T01:51:38.2023639Z           ]
2026-06-21T01:51:38.2023720Z         },
2026-06-21T01:51:38.2023796Z         "unit": {
2026-06-21T01:51:38.2023896Z           "complete": true,
2026-06-21T01:51:38.2023978Z           "evidence": [
2026-06-21T01:51:38.2024049Z             {
2026-06-21T01:51:38.2024149Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2024234Z               "line": 8169
2026-06-21T01:51:38.2024322Z             }
2026-06-21T01:51:38.2024402Z           ]
2026-06-21T01:51:38.2024487Z         }
2026-06-21T01:51:38.2024574Z       }
2026-06-21T01:51:38.2024656Z     },
2026-06-21T01:51:38.2024740Z     {
2026-06-21T01:51:38.2024829Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-21T01:51:38.2028641Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-21T01:51:38.2028755Z       "requiredStages": [
2026-06-21T01:51:38.2028932Z         "impl",
2026-06-21T01:51:38.2029100Z         "unit"
2026-06-21T01:51:38.2029190Z       ],
2026-06-21T01:51:38.2029366Z       "stages": {
2026-06-21T01:51:38.2029453Z         "doc": {
2026-06-21T01:51:38.2029542Z           "complete": false,
2026-06-21T01:51:38.2029642Z           "evidence": []
2026-06-21T01:51:38.2029734Z         },
2026-06-21T01:51:38.2029811Z         "impl": {
2026-06-21T01:51:38.2029908Z           "complete": true,
2026-06-21T01:51:38.2029994Z           "evidence": [
2026-06-21T01:51:38.2030075Z             {
2026-06-21T01:51:38.2030179Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2030268Z               "line": 910
2026-06-21T01:51:38.2030349Z             }
2026-06-21T01:51:38.2030431Z           ]
2026-06-21T01:51:38.2030513Z         },
2026-06-21T01:51:38.2030592Z         "int": {
2026-06-21T01:51:38.2030688Z           "complete": false,
2026-06-21T01:51:38.2030770Z           "evidence": []
2026-06-21T01:51:38.2030855Z         },
2026-06-21T01:51:38.2030945Z         "unit": {
2026-06-21T01:51:38.2031022Z           "complete": true,
2026-06-21T01:51:38.2031108Z           "evidence": [
2026-06-21T01:51:38.2031193Z             {
2026-06-21T01:51:38.2031298Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2031380Z               "line": 1112
2026-06-21T01:51:38.2031470Z             }
2026-06-21T01:51:38.2031551Z           ]
2026-06-21T01:51:38.2031632Z         }
2026-06-21T01:51:38.2031705Z       }
2026-06-21T01:51:38.2031789Z     },
2026-06-21T01:51:38.2031870Z     {
2026-06-21T01:51:38.2031981Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-21T01:51:38.2036468Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T01:51:38.2036592Z       "requiredStages": [
2026-06-21T01:51:38.2036677Z         "impl",
2026-06-21T01:51:38.2036763Z         "unit"
2026-06-21T01:51:38.2036845Z       ],
2026-06-21T01:51:38.2036935Z       "stages": {
2026-06-21T01:51:38.2037020Z         "doc": {
2026-06-21T01:51:38.2037113Z           "complete": false,
2026-06-21T01:51:38.2037207Z           "evidence": []
2026-06-21T01:51:38.2037282Z         },
2026-06-21T01:51:38.2037369Z         "impl": {
2026-06-21T01:51:38.2037456Z           "complete": true,
2026-06-21T01:51:38.2037549Z           "evidence": [
2026-06-21T01:51:38.2037630Z             {
2026-06-21T01:51:38.2037735Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2037825Z               "line": 264
2026-06-21T01:51:38.2037900Z             }
2026-06-21T01:51:38.2037975Z           ]
2026-06-21T01:51:38.2038052Z         },
2026-06-21T01:51:38.2038248Z         "int": {
2026-06-21T01:51:38.2038338Z           "complete": false,
2026-06-21T01:51:38.2038486Z           "evidence": []
2026-06-21T01:51:38.2038572Z         },
2026-06-21T01:51:38.2038652Z         "unit": {
2026-06-21T01:51:38.2038734Z           "complete": true,
2026-06-21T01:51:38.2038824Z           "evidence": [
2026-06-21T01:51:38.2038905Z             {
2026-06-21T01:51:38.2039277Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2039373Z               "line": 1094
2026-06-21T01:51:38.2039454Z             },
2026-06-21T01:51:38.2039525Z             {
2026-06-21T01:51:38.2039630Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2039712Z               "line": 1225
2026-06-21T01:51:38.2039792Z             },
2026-06-21T01:51:38.2039873Z             {
2026-06-21T01:51:38.2039980Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2040065Z               "line": 1227
2026-06-21T01:51:38.2040144Z             }
2026-06-21T01:51:38.2040231Z           ]
2026-06-21T01:51:38.2040313Z         }
2026-06-21T01:51:38.2040399Z       }
2026-06-21T01:51:38.2040482Z     },
2026-06-21T01:51:38.2040568Z     {
2026-06-21T01:51:38.2040678Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-21T01:51:38.2040919Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-21T01:51:38.2041020Z       "requiredStages": [
2026-06-21T01:51:38.2041091Z         "impl",
2026-06-21T01:51:38.2041171Z         "unit"
2026-06-21T01:51:38.2041253Z       ],
2026-06-21T01:51:38.2041339Z       "stages": {
2026-06-21T01:51:38.2041420Z         "doc": {
2026-06-21T01:51:38.2041505Z           "complete": true,
2026-06-21T01:51:38.2041592Z           "evidence": [
2026-06-21T01:51:38.2041677Z             {
2026-06-21T01:51:38.2041777Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.2041873Z               "line": 139
2026-06-21T01:51:38.2041950Z             }
2026-06-21T01:51:38.2042034Z           ]
2026-06-21T01:51:38.2042106Z         },
2026-06-21T01:51:38.2042192Z         "impl": {
2026-06-21T01:51:38.2042284Z           "complete": true,
2026-06-21T01:51:38.2042373Z           "evidence": [
2026-06-21T01:51:38.2042454Z             {
2026-06-21T01:51:38.2042555Z               "path": "crates/spt-store/src/db.rs",
2026-06-21T01:51:38.2042641Z               "line": 29
2026-06-21T01:51:38.2042711Z             },
2026-06-21T01:51:38.2042798Z             {
2026-06-21T01:51:38.2042909Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:51:38.2042993Z               "line": 101
2026-06-21T01:51:38.2043083Z             },
2026-06-21T01:51:38.2043164Z             {
2026-06-21T01:51:38.2043292Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:51:38.2043371Z               "line": 30
2026-06-21T01:51:38.2043456Z             },
2026-06-21T01:51:38.2043534Z             {
2026-06-21T01:51:38.2043644Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:51:38.2043738Z               "line": 48
2026-06-21T01:51:38.2043815Z             }
2026-06-21T01:51:38.2043891Z           ]
2026-06-21T01:51:38.2043968Z         },
2026-06-21T01:51:38.2044058Z         "int": {
2026-06-21T01:51:38.2044144Z           "complete": false,
2026-06-21T01:51:38.2044234Z           "evidence": []
2026-06-21T01:51:38.2044315Z         },
2026-06-21T01:51:38.2044401Z         "unit": {
2026-06-21T01:51:38.2044488Z           "complete": true,
2026-06-21T01:51:38.2044573Z           "evidence": [
2026-06-21T01:51:38.2044658Z             {
2026-06-21T01:51:38.2044778Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:51:38.2044869Z               "line": 162
2026-06-21T01:51:38.2044954Z             }
2026-06-21T01:51:38.2045040Z           ]
2026-06-21T01:51:38.2045122Z         }
2026-06-21T01:51:38.2045198Z       }
2026-06-21T01:51:38.2045283Z     },
2026-06-21T01:51:38.2045364Z     {
2026-06-21T01:51:38.2045485Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-21T01:51:38.2045997Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-21T01:51:38.2046175Z       "requiredStages": [
2026-06-21T01:51:38.2046269Z         "doc",
2026-06-21T01:51:38.2046345Z         "impl",
2026-06-21T01:51:38.2046432Z         "unit"
2026-06-21T01:51:38.2046508Z       ],
2026-06-21T01:51:38.2046608Z       "stages": {
2026-06-21T01:51:38.2046694Z         "doc": {
2026-06-21T01:51:38.2046789Z           "complete": true,
2026-06-21T01:51:38.2046884Z           "evidence": [
2026-06-21T01:51:38.2046965Z             {
2026-06-21T01:51:38.2047076Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.2047166Z               "line": 151
2026-06-21T01:51:38.2047251Z             }
2026-06-21T01:51:38.2047338Z           ]
2026-06-21T01:51:38.2047419Z         },
2026-06-21T01:51:38.2047509Z         "impl": {
2026-06-21T01:51:38.2047599Z           "complete": true,
2026-06-21T01:51:38.2047692Z           "evidence": [
2026-06-21T01:51:38.2047781Z             {
2026-06-21T01:51:38.2047905Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:51:38.2047997Z               "line": 22
2026-06-21T01:51:38.2048077Z             }
2026-06-21T01:51:38.2048162Z           ]
2026-06-21T01:51:38.2048233Z         },
2026-06-21T01:51:38.2048319Z         "int": {
2026-06-21T01:51:38.2048418Z           "complete": false,
2026-06-21T01:51:38.2048516Z           "evidence": []
2026-06-21T01:51:38.2048597Z         },
2026-06-21T01:51:38.2048679Z         "unit": {
2026-06-21T01:51:38.2048765Z           "complete": true,
2026-06-21T01:51:38.2048845Z           "evidence": [
2026-06-21T01:51:38.2048931Z             {
2026-06-21T01:51:38.2049122Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:51:38.2049207Z               "line": 298
2026-06-21T01:51:38.2049304Z             }
2026-06-21T01:51:38.2049380Z           ]
2026-06-21T01:51:38.2049484Z         }
2026-06-21T01:51:38.2049566Z       }
2026-06-21T01:51:38.2049657Z     },
2026-06-21T01:51:38.2049738Z     {
2026-06-21T01:51:38.2049861Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-21T01:51:38.2050301Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-21T01:51:38.2050395Z       "requiredStages": [
2026-06-21T01:51:38.2050486Z         "impl",
2026-06-21T01:51:38.2050568Z         "unit"
2026-06-21T01:51:38.2050653Z       ],
2026-06-21T01:51:38.2050739Z       "stages": {
2026-06-21T01:51:38.2050825Z         "doc": {
2026-06-21T01:51:38.2050911Z           "complete": true,
2026-06-21T01:51:38.2050991Z           "evidence": [
2026-06-21T01:51:38.2051066Z             {
2026-06-21T01:51:38.2051171Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.2051262Z               "line": 145
2026-06-21T01:51:38.2051341Z             }
2026-06-21T01:51:38.2051426Z           ]
2026-06-21T01:51:38.2051508Z         },
2026-06-21T01:51:38.2051599Z         "impl": {
2026-06-21T01:51:38.2051689Z           "complete": true,
2026-06-21T01:51:38.2051775Z           "evidence": [
2026-06-21T01:51:38.2051866Z             {
2026-06-21T01:51:38.2051990Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T01:51:38.2052075Z               "line": 160
2026-06-21T01:51:38.2052162Z             },
2026-06-21T01:51:38.2052247Z             {
2026-06-21T01:51:38.2052370Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2052457Z               "line": 200
2026-06-21T01:51:38.2052539Z             },
2026-06-21T01:51:38.2052614Z             {
2026-06-21T01:51:38.2052738Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2052825Z               "line": 298
2026-06-21T01:51:38.2052910Z             },
2026-06-21T01:51:38.2052995Z             {
2026-06-21T01:51:38.2053102Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T01:51:38.2053187Z               "line": 20
2026-06-21T01:51:38.2053377Z             }
2026-06-21T01:51:38.2053464Z           ]
2026-06-21T01:51:38.2053553Z         },
2026-06-21T01:51:38.2053714Z         "int": {
2026-06-21T01:51:38.2053810Z           "complete": false,
2026-06-21T01:51:38.2053898Z           "evidence": []
2026-06-21T01:51:38.2053974Z         },
2026-06-21T01:51:38.2054061Z         "unit": {
2026-06-21T01:51:38.2054151Z           "complete": true,
2026-06-21T01:51:38.2054241Z           "evidence": [
2026-06-21T01:51:38.2054327Z             {
2026-06-21T01:51:38.2054457Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2054547Z               "line": 937
2026-06-21T01:51:38.2054632Z             },
2026-06-21T01:51:38.2054714Z             {
2026-06-21T01:51:38.2054838Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T01:51:38.2054923Z               "line": 88
2026-06-21T01:51:38.2055000Z             },
2026-06-21T01:51:38.2055077Z             {
2026-06-21T01:51:38.2055191Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2055276Z               "line": 851
2026-06-21T01:51:38.2055368Z             },
2026-06-21T01:51:38.2055448Z             {
2026-06-21T01:51:38.2055567Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2055649Z               "line": 870
2026-06-21T01:51:38.2055726Z             },
2026-06-21T01:51:38.2055814Z             {
2026-06-21T01:51:38.2055939Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:51:38.2056031Z               "line": 279
2026-06-21T01:51:38.2056119Z             },
2026-06-21T01:51:38.2060006Z             {
2026-06-21T01:51:38.2060165Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T01:51:38.2060260Z               "line": 82
2026-06-21T01:51:38.2060345Z             },
2026-06-21T01:51:38.2060431Z             {
2026-06-21T01:51:38.2060560Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T01:51:38.2060645Z               "line": 99
2026-06-21T01:51:38.2060751Z             },
2026-06-21T01:51:38.2060832Z             {
2026-06-21T01:51:38.2060950Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T01:51:38.2061036Z               "line": 119
2026-06-21T01:51:38.2061129Z             }
2026-06-21T01:51:38.2061218Z           ]
2026-06-21T01:51:38.2061304Z         }
2026-06-21T01:51:38.2061386Z       }
2026-06-21T01:51:38.2061467Z     },
2026-06-21T01:51:38.2061561Z     {
2026-06-21T01:51:38.2061674Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-21T01:51:38.2063032Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-21T01:51:38.2063141Z       "requiredStages": [
2026-06-21T01:51:38.2063222Z         "doc",
2026-06-21T01:51:38.2063308Z         "impl",
2026-06-21T01:51:38.2063394Z         "unit"
2026-06-21T01:51:38.2063479Z       ],
2026-06-21T01:51:38.2063560Z       "stages": {
2026-06-21T01:51:38.2063642Z         "doc": {
2026-06-21T01:51:38.2063743Z           "complete": true,
2026-06-21T01:51:38.2063827Z           "evidence": [
2026-06-21T01:51:38.2063908Z             {
2026-06-21T01:51:38.2064014Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.2064095Z               "line": 157
2026-06-21T01:51:38.2064179Z             }
2026-06-21T01:51:38.2064255Z           ]
2026-06-21T01:51:38.2064346Z         },
2026-06-21T01:51:38.2064426Z         "impl": {
2026-06-21T01:51:38.2064520Z           "complete": true,
2026-06-21T01:51:38.2064606Z           "evidence": [
2026-06-21T01:51:38.2064697Z             {
2026-06-21T01:51:38.2064834Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T01:51:38.2065074Z               "line": 137
2026-06-21T01:51:38.2065163Z             },
2026-06-21T01:51:38.2065245Z             {
2026-06-21T01:51:38.2065483Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2065570Z               "line": 564
2026-06-21T01:51:38.2065651Z             },
2026-06-21T01:51:38.2065731Z             {
2026-06-21T01:51:38.2065855Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2065947Z               "line": 571
2026-06-21T01:51:38.2066017Z             },
2026-06-21T01:51:38.2066103Z             {
2026-06-21T01:51:38.2066224Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2066318Z               "line": 227
2026-06-21T01:51:38.2066409Z             }
2026-06-21T01:51:38.2066490Z           ]
2026-06-21T01:51:38.2066577Z         },
2026-06-21T01:51:38.2066661Z         "int": {
2026-06-21T01:51:38.2066756Z           "complete": false,
2026-06-21T01:51:38.2066849Z           "evidence": []
2026-06-21T01:51:38.2066939Z         },
2026-06-21T01:51:38.2067023Z         "unit": {
2026-06-21T01:51:38.2067117Z           "complete": true,
2026-06-21T01:51:38.2067213Z           "evidence": [
2026-06-21T01:51:38.2067291Z             {
2026-06-21T01:51:38.2067423Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2067509Z               "line": 1622
2026-06-21T01:51:38.2067595Z             },
2026-06-21T01:51:38.2067680Z             {
2026-06-21T01:51:38.2067805Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2067891Z               "line": 1680
2026-06-21T01:51:38.2067977Z             },
2026-06-21T01:51:38.2068062Z             {
2026-06-21T01:51:38.2068182Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2068272Z               "line": 883
2026-06-21T01:51:38.2068367Z             }
2026-06-21T01:51:38.2068444Z           ]
2026-06-21T01:51:38.2068530Z         }
2026-06-21T01:51:38.2068610Z       }
2026-06-21T01:51:38.2068701Z     },
2026-06-21T01:51:38.2068783Z     {
2026-06-21T01:51:38.2068901Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-21T01:51:38.2069202Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-21T01:51:38.2069296Z       "requiredStages": [
2026-06-21T01:51:38.2069386Z         "impl",
2026-06-21T01:51:38.2069463Z         "unit"
2026-06-21T01:51:38.2069552Z       ],
2026-06-21T01:51:38.2069637Z       "stages": {
2026-06-21T01:51:38.2069723Z         "doc": {
2026-06-21T01:51:38.2069814Z           "complete": false,
2026-06-21T01:51:38.2069899Z           "evidence": []
2026-06-21T01:51:38.2069985Z         },
2026-06-21T01:51:38.2070071Z         "impl": {
2026-06-21T01:51:38.2070162Z           "complete": true,
2026-06-21T01:51:38.2070252Z           "evidence": [
2026-06-21T01:51:38.2070342Z             {
2026-06-21T01:51:38.2070458Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:51:38.2070543Z               "line": 15
2026-06-21T01:51:38.2070633Z             },
2026-06-21T01:51:38.2070716Z             {
2026-06-21T01:51:38.2070839Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:51:38.2070929Z               "line": 55
2026-06-21T01:51:38.2071006Z             },
2026-06-21T01:51:38.2071092Z             {
2026-06-21T01:51:38.2071205Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:51:38.2071296Z               "line": 66
2026-06-21T01:51:38.2071369Z             },
2026-06-21T01:51:38.2071449Z             {
2026-06-21T01:51:38.2071558Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:51:38.2071636Z               "line": 115
2026-06-21T01:51:38.2071717Z             },
2026-06-21T01:51:38.2071792Z             {
2026-06-21T01:51:38.2071907Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:51:38.2071984Z               "line": 138
2026-06-21T01:51:38.2072069Z             }
2026-06-21T01:51:38.2072159Z           ]
2026-06-21T01:51:38.2072244Z         },
2026-06-21T01:51:38.2072447Z         "int": {
2026-06-21T01:51:38.2072541Z           "complete": false,
2026-06-21T01:51:38.2072638Z           "evidence": []
2026-06-21T01:51:38.2072800Z         },
2026-06-21T01:51:38.2072885Z         "unit": {
2026-06-21T01:51:38.2072967Z           "complete": true,
2026-06-21T01:51:38.2073053Z           "evidence": [
2026-06-21T01:51:38.2073138Z             {
2026-06-21T01:51:38.2073253Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:51:38.2073344Z               "line": 363
2026-06-21T01:51:38.2073425Z             },
2026-06-21T01:51:38.2073500Z             {
2026-06-21T01:51:38.2073616Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:51:38.2073691Z               "line": 369
2026-06-21T01:51:38.2073777Z             },
2026-06-21T01:51:38.2073858Z             {
2026-06-21T01:51:38.2073968Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:51:38.2074054Z               "line": 383
2026-06-21T01:51:38.2074135Z             },
2026-06-21T01:51:38.2074227Z             {
2026-06-21T01:51:38.2074321Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:51:38.2074411Z               "line": 392
2026-06-21T01:51:38.2074483Z             },
2026-06-21T01:51:38.2074565Z             {
2026-06-21T01:51:38.2074683Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:51:38.2074773Z               "line": 195
2026-06-21T01:51:38.2074858Z             },
2026-06-21T01:51:38.2074930Z             {
2026-06-21T01:51:38.2075042Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:51:38.2075118Z               "line": 208
2026-06-21T01:51:38.2075205Z             },
2026-06-21T01:51:38.2075286Z             {
2026-06-21T01:51:38.2075399Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:51:38.2075485Z               "line": 271
2026-06-21T01:51:38.2075568Z             },
2026-06-21T01:51:38.2075653Z             {
2026-06-21T01:51:38.2075767Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:51:38.2075868Z               "line": 290
2026-06-21T01:51:38.2075953Z             },
2026-06-21T01:51:38.2076048Z             {
2026-06-21T01:51:38.2076168Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:51:38.2076272Z               "line": 319
2026-06-21T01:51:38.2076363Z             }
2026-06-21T01:51:38.2076444Z           ]
2026-06-21T01:51:38.2076535Z         }
2026-06-21T01:51:38.2076616Z       }
2026-06-21T01:51:38.2076706Z     },
2026-06-21T01:51:38.2076793Z     {
2026-06-21T01:51:38.2076907Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-21T01:51:38.2077170Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-21T01:51:38.2077263Z       "requiredStages": [
2026-06-21T01:51:38.2077345Z         "impl",
2026-06-21T01:51:38.2077437Z         "unit",
2026-06-21T01:51:38.2077513Z         "int"
2026-06-21T01:51:38.2077597Z       ],
2026-06-21T01:51:38.2077673Z       "stages": {
2026-06-21T01:51:38.2077764Z         "doc": {
2026-06-21T01:51:38.2077856Z           "complete": false,
2026-06-21T01:51:38.2077949Z           "evidence": []
2026-06-21T01:51:38.2078025Z         },
2026-06-21T01:51:38.2078108Z         "impl": {
2026-06-21T01:51:38.2078199Z           "complete": true,
2026-06-21T01:51:38.2078278Z           "evidence": [
2026-06-21T01:51:38.2078370Z             {
2026-06-21T01:51:38.2078489Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.2078583Z               "line": 474
2026-06-21T01:51:38.2078660Z             },
2026-06-21T01:51:38.2078737Z             {
2026-06-21T01:51:38.2078851Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.2078931Z               "line": 916
2026-06-21T01:51:38.2079123Z             },
2026-06-21T01:51:38.2079209Z             {
2026-06-21T01:51:38.2079319Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.2079410Z               "line": 961
2026-06-21T01:51:38.2079489Z             },
2026-06-21T01:51:38.2079711Z             {
2026-06-21T01:51:38.2079818Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.2080013Z               "line": 986
2026-06-21T01:51:38.2080093Z             },
2026-06-21T01:51:38.2080173Z             {
2026-06-21T01:51:38.2080297Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.2080379Z               "line": 1626
2026-06-21T01:51:38.2080459Z             },
2026-06-21T01:51:38.2080540Z             {
2026-06-21T01:51:38.2080660Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.2080736Z               "line": 1871
2026-06-21T01:51:38.2080821Z             },
2026-06-21T01:51:38.2080902Z             {
2026-06-21T01:51:38.2081008Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.2081103Z               "line": 2002
2026-06-21T01:51:38.2081184Z             },
2026-06-21T01:51:38.2081266Z             {
2026-06-21T01:51:38.2081385Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.2081479Z               "line": 2050
2026-06-21T01:51:38.2081561Z             },
2026-06-21T01:51:38.2081633Z             {
2026-06-21T01:51:38.2081752Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T01:51:38.2081842Z               "line": 46
2026-06-21T01:51:38.2081924Z             },
2026-06-21T01:51:38.2082009Z             {
2026-06-21T01:51:38.2082123Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T01:51:38.2082215Z               "line": 200
2026-06-21T01:51:38.2082296Z             },
2026-06-21T01:51:38.2082380Z             {
2026-06-21T01:51:38.2082491Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T01:51:38.2082592Z               "line": 132
2026-06-21T01:51:38.2082662Z             },
2026-06-21T01:51:38.2082757Z             {
2026-06-21T01:51:38.2082881Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:51:38.2082965Z               "line": 137
2026-06-21T01:51:38.2083055Z             },
2026-06-21T01:51:38.2083135Z             {
2026-06-21T01:51:38.2083256Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:51:38.2083341Z               "line": 183
2026-06-21T01:51:38.2083426Z             }
2026-06-21T01:51:38.2083503Z           ]
2026-06-21T01:51:38.2083585Z         },
2026-06-21T01:51:38.2083674Z         "int": {
2026-06-21T01:51:38.2083759Z           "complete": true,
2026-06-21T01:51:38.2083852Z           "evidence": [
2026-06-21T01:51:38.2083937Z             {
2026-06-21T01:51:38.2084070Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-21T01:51:38.2084157Z               "line": 27
2026-06-21T01:51:38.2084247Z             },
2026-06-21T01:51:38.2084328Z             {
2026-06-21T01:51:38.2084452Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T01:51:38.2084543Z               "line": 148
2026-06-21T01:51:38.2084628Z             },
2026-06-21T01:51:38.2084714Z             {
2026-06-21T01:51:38.2084839Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T01:51:38.2084933Z               "line": 200
2026-06-21T01:51:38.2085024Z             }
2026-06-21T01:51:38.2085111Z           ]
2026-06-21T01:51:38.2085206Z         },
2026-06-21T01:51:38.2085295Z         "unit": {
2026-06-21T01:51:38.2085380Z           "complete": true,
2026-06-21T01:51:38.2085476Z           "evidence": [
2026-06-21T01:51:38.2085560Z             {
2026-06-21T01:51:38.2085688Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T01:51:38.2085774Z               "line": 366
2026-06-21T01:51:38.2085856Z             },
2026-06-21T01:51:38.2085946Z             {
2026-06-21T01:51:38.2086060Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T01:51:38.2086170Z               "line": 398
2026-06-21T01:51:38.2086265Z             },
2026-06-21T01:51:38.2086356Z             {
2026-06-21T01:51:38.2086466Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T01:51:38.2086561Z               "line": 419
2026-06-21T01:51:38.2086747Z             },
2026-06-21T01:51:38.2086833Z             {
2026-06-21T01:51:38.2086951Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:51:38.2087114Z               "line": 628
2026-06-21T01:51:38.2087200Z             },
2026-06-21T01:51:38.2087281Z             {
2026-06-21T01:51:38.2087406Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T01:51:38.2087495Z               "line": 289
2026-06-21T01:51:38.2087576Z             },
2026-06-21T01:51:38.2087659Z             {
2026-06-21T01:51:38.2087767Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T01:51:38.2087858Z               "line": 230
2026-06-21T01:51:38.2087940Z             },
2026-06-21T01:51:38.2088026Z             {
2026-06-21T01:51:38.2088143Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:51:38.2088223Z               "line": 526
2026-06-21T01:51:38.2088300Z             },
2026-06-21T01:51:38.2088382Z             {
2026-06-21T01:51:38.2088500Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:51:38.2088590Z               "line": 556
2026-06-21T01:51:38.2088683Z             }
2026-06-21T01:51:38.2088768Z           ]
2026-06-21T01:51:38.2088843Z         }
2026-06-21T01:51:38.2088930Z       }
2026-06-21T01:51:38.2089102Z     },
2026-06-21T01:51:38.2089186Z     {
2026-06-21T01:51:38.2089312Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-21T01:51:38.2090992Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-21T01:51:38.2091105Z       "requiredStages": [
2026-06-21T01:51:38.2091191Z         "doc",
2026-06-21T01:51:38.2091273Z         "impl",
2026-06-21T01:51:38.2091367Z         "unit"
2026-06-21T01:51:38.2091439Z       ],
2026-06-21T01:51:38.2091531Z       "stages": {
2026-06-21T01:51:38.2091611Z         "doc": {
2026-06-21T01:51:38.2091710Z           "complete": true,
2026-06-21T01:51:38.2091792Z           "evidence": [
2026-06-21T01:51:38.2091884Z             {
2026-06-21T01:51:38.2092002Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.2092087Z               "line": 314
2026-06-21T01:51:38.2092174Z             }
2026-06-21T01:51:38.2092259Z           ]
2026-06-21T01:51:38.2092345Z         },
2026-06-21T01:51:38.2092431Z         "impl": {
2026-06-21T01:51:38.2092518Z           "complete": true,
2026-06-21T01:51:38.2092611Z           "evidence": [
2026-06-21T01:51:38.2092698Z             {
2026-06-21T01:51:38.2092833Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T01:51:38.2092921Z               "line": 33
2026-06-21T01:51:38.2093003Z             },
2026-06-21T01:51:38.2093081Z             {
2026-06-21T01:51:38.2093213Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T01:51:38.2093298Z               "line": 39
2026-06-21T01:51:38.2093378Z             }
2026-06-21T01:51:38.2093465Z           ]
2026-06-21T01:51:38.2093544Z         },
2026-06-21T01:51:38.2093634Z         "int": {
2026-06-21T01:51:38.2093715Z           "complete": false,
2026-06-21T01:51:38.2093801Z           "evidence": []
2026-06-21T01:51:38.2093891Z         },
2026-06-21T01:51:38.2093972Z         "unit": {
2026-06-21T01:51:38.2094078Z           "complete": true,
2026-06-21T01:51:38.2094163Z           "evidence": [
2026-06-21T01:51:38.2094248Z             {
2026-06-21T01:51:38.2094364Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T01:51:38.2094450Z               "line": 95
2026-06-21T01:51:38.2094535Z             }
2026-06-21T01:51:38.2094616Z           ]
2026-06-21T01:51:38.2094826Z         }
2026-06-21T01:51:38.2094907Z       }
2026-06-21T01:51:38.2094998Z     },
2026-06-21T01:51:38.2095164Z     {
2026-06-21T01:51:38.2095279Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-21T01:51:38.2097679Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-21T01:51:38.2097788Z       "requiredStages": [
2026-06-21T01:51:38.2097875Z         "impl",
2026-06-21T01:51:38.2097956Z         "unit"
2026-06-21T01:51:38.2098041Z       ],
2026-06-21T01:51:38.2098127Z       "stages": {
2026-06-21T01:51:38.2098214Z         "doc": {
2026-06-21T01:51:38.2098304Z           "complete": false,
2026-06-21T01:51:38.2098394Z           "evidence": []
2026-06-21T01:51:38.2098480Z         },
2026-06-21T01:51:38.2098567Z         "impl": {
2026-06-21T01:51:38.2098656Z           "complete": true,
2026-06-21T01:51:38.2098746Z           "evidence": [
2026-06-21T01:51:38.2098822Z             {
2026-06-21T01:51:38.2099037Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2099122Z               "line": 488
2026-06-21T01:51:38.2099204Z             }
2026-06-21T01:51:38.2099285Z           ]
2026-06-21T01:51:38.2099370Z         },
2026-06-21T01:51:38.2099456Z         "int": {
2026-06-21T01:51:38.2099543Z           "complete": false,
2026-06-21T01:51:38.2099638Z           "evidence": []
2026-06-21T01:51:38.2099718Z         },
2026-06-21T01:51:38.2099814Z         "unit": {
2026-06-21T01:51:38.2099895Z           "complete": true,
2026-06-21T01:51:38.2099991Z           "evidence": [
2026-06-21T01:51:38.2100076Z             {
2026-06-21T01:51:38.2100201Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2100295Z               "line": 1466
2026-06-21T01:51:38.2100376Z             }
2026-06-21T01:51:38.2100459Z           ]
2026-06-21T01:51:38.2100535Z         }
2026-06-21T01:51:38.2100619Z       }
2026-06-21T01:51:38.2100705Z     },
2026-06-21T01:51:38.2100783Z     {
2026-06-21T01:51:38.2100892Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-21T01:51:38.2103035Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-21T01:51:38.2103130Z       "requiredStages": [
2026-06-21T01:51:38.2103206Z         "unit"
2026-06-21T01:51:38.2103292Z       ],
2026-06-21T01:51:38.2103379Z       "stages": {
2026-06-21T01:51:38.2103463Z         "doc": {
2026-06-21T01:51:38.2103553Z           "complete": false,
2026-06-21T01:51:38.2103645Z           "evidence": []
2026-06-21T01:51:38.2103727Z         },
2026-06-21T01:51:38.2103806Z         "impl": {
2026-06-21T01:51:38.2103901Z           "complete": true,
2026-06-21T01:51:38.2104095Z           "evidence": [
2026-06-21T01:51:38.2104175Z             {
2026-06-21T01:51:38.2104280Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2104475Z               "line": 3520
2026-06-21T01:51:38.2104556Z             },
2026-06-21T01:51:38.2104638Z             {
2026-06-21T01:51:38.2104733Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2104818Z               "line": 3572
2026-06-21T01:51:38.2104904Z             },
2026-06-21T01:51:38.2104987Z             {
2026-06-21T01:51:38.2105096Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2105176Z               "line": 3617
2026-06-21T01:51:38.2105262Z             },
2026-06-21T01:51:38.2105348Z             {
2026-06-21T01:51:38.2105457Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.2105538Z               "line": 92
2026-06-21T01:51:38.2105626Z             },
2026-06-21T01:51:38.2105710Z             {
2026-06-21T01:51:38.2105815Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.2105902Z               "line": 148
2026-06-21T01:51:38.2105987Z             },
2026-06-21T01:51:38.2106072Z             {
2026-06-21T01:51:38.2106188Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.2106274Z               "line": 192
2026-06-21T01:51:38.2106363Z             },
2026-06-21T01:51:38.2106444Z             {
2026-06-21T01:51:38.2106553Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.2106643Z               "line": 200
2026-06-21T01:51:38.2106727Z             },
2026-06-21T01:51:38.2106812Z             {
2026-06-21T01:51:38.2106914Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.2107009Z               "line": 211
2026-06-21T01:51:38.2107090Z             },
2026-06-21T01:51:38.2107166Z             {
2026-06-21T01:51:38.2107276Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.2107357Z               "line": 265
2026-06-21T01:51:38.2107447Z             },
2026-06-21T01:51:38.2107530Z             {
2026-06-21T01:51:38.2107643Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.2107733Z               "line": 279
2026-06-21T01:51:38.2107820Z             }
2026-06-21T01:51:38.2107905Z           ]
2026-06-21T01:51:38.2107986Z         },
2026-06-21T01:51:38.2108072Z         "int": {
2026-06-21T01:51:38.2108159Z           "complete": false,
2026-06-21T01:51:38.2108249Z           "evidence": []
2026-06-21T01:51:38.2108330Z         },
2026-06-21T01:51:38.2108415Z         "unit": {
2026-06-21T01:51:38.2108498Z           "complete": true,
2026-06-21T01:51:38.2108582Z           "evidence": [
2026-06-21T01:51:38.2108663Z             {
2026-06-21T01:51:38.2108764Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.2108845Z               "line": 419
2026-06-21T01:51:38.2108930Z             },
2026-06-21T01:51:38.2109108Z             {
2026-06-21T01:51:38.2109216Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.2109301Z               "line": 470
2026-06-21T01:51:38.2109387Z             },
2026-06-21T01:51:38.2109468Z             {
2026-06-21T01:51:38.2109578Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.2109663Z               "line": 499
2026-06-21T01:51:38.2109750Z             },
2026-06-21T01:51:38.2109836Z             {
2026-06-21T01:51:38.2109940Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.2110021Z               "line": 526
2026-06-21T01:51:38.2110103Z             }
2026-06-21T01:51:38.2110188Z           ]
2026-06-21T01:51:38.2110259Z         }
2026-06-21T01:51:38.2110350Z       }
2026-06-21T01:51:38.2110432Z     },
2026-06-21T01:51:38.2110513Z     {
2026-06-21T01:51:38.2110617Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-21T01:51:38.2110794Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-21T01:51:38.2110889Z       "requiredStages": [
2026-06-21T01:51:38.2110970Z         "impl",
2026-06-21T01:51:38.2111161Z         "unit"
2026-06-21T01:51:38.2111247Z       ],
2026-06-21T01:51:38.2111333Z       "stages": {
2026-06-21T01:51:38.2111494Z         "doc": {
2026-06-21T01:51:38.2111575Z           "complete": false,
2026-06-21T01:51:38.2111665Z           "evidence": []
2026-06-21T01:51:38.2111737Z         },
2026-06-21T01:51:38.2111816Z         "impl": {
2026-06-21T01:51:38.2111906Z           "complete": true,
2026-06-21T01:51:38.2111992Z           "evidence": [
2026-06-21T01:51:38.2112073Z             {
2026-06-21T01:51:38.2112192Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.2112273Z               "line": 62
2026-06-21T01:51:38.2112360Z             },
2026-06-21T01:51:38.2112445Z             {
2026-06-21T01:51:38.2112573Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.2112660Z               "line": 71
2026-06-21T01:51:38.2112745Z             },
2026-06-21T01:51:38.2112831Z             {
2026-06-21T01:51:38.2112960Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.2113060Z               "line": 80
2026-06-21T01:51:38.2113132Z             },
2026-06-21T01:51:38.2113222Z             {
2026-06-21T01:51:38.2113342Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.2113428Z               "line": 88
2026-06-21T01:51:38.2113513Z             },
2026-06-21T01:51:38.2113600Z             {
2026-06-21T01:51:38.2113718Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2113799Z               "line": 33
2026-06-21T01:51:38.2113886Z             },
2026-06-21T01:51:38.2113972Z             {
2026-06-21T01:51:38.2114085Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2114167Z               "line": 65
2026-06-21T01:51:38.2114258Z             },
2026-06-21T01:51:38.2114343Z             {
2026-06-21T01:51:38.2114451Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2114537Z               "line": 74
2026-06-21T01:51:38.2114613Z             },
2026-06-21T01:51:38.2114702Z             {
2026-06-21T01:51:38.2114797Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2114892Z               "line": 93
2026-06-21T01:51:38.2114979Z             },
2026-06-21T01:51:38.2115063Z             {
2026-06-21T01:51:38.2115169Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2115256Z               "line": 102
2026-06-21T01:51:38.2115341Z             },
2026-06-21T01:51:38.2115416Z             {
2026-06-21T01:51:38.2115532Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2115617Z               "line": 111
2026-06-21T01:51:38.2115698Z             },
2026-06-21T01:51:38.2115784Z             {
2026-06-21T01:51:38.2115890Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2115985Z               "line": 122
2026-06-21T01:51:38.2116065Z             },
2026-06-21T01:51:38.2116152Z             {
2026-06-21T01:51:38.2116265Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2116356Z               "line": 140
2026-06-21T01:51:38.2116443Z             },
2026-06-21T01:51:38.2116529Z             {
2026-06-21T01:51:38.2116637Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2116724Z               "line": 149
2026-06-21T01:51:38.2116811Z             },
2026-06-21T01:51:38.2116895Z             {
2026-06-21T01:51:38.2117004Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2117099Z               "line": 158
2026-06-21T01:51:38.2117180Z             },
2026-06-21T01:51:38.2117268Z             {
2026-06-21T01:51:38.2117372Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2117469Z               "line": 169
2026-06-21T01:51:38.2117555Z             },
2026-06-21T01:51:38.2117635Z             {
2026-06-21T01:51:38.2117750Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2117836Z               "line": 177
2026-06-21T01:51:38.2117921Z             },
2026-06-21T01:51:38.2118094Z             {
2026-06-21T01:51:38.2118204Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2118370Z               "line": 186
2026-06-21T01:51:38.2118451Z             },
2026-06-21T01:51:38.2118542Z             {
2026-06-21T01:51:38.2118646Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2118738Z               "line": 195
2026-06-21T01:51:38.2118823Z             },
2026-06-21T01:51:38.2118908Z             {
2026-06-21T01:51:38.2119095Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2119180Z               "line": 204
2026-06-21T01:51:38.2119267Z             },
2026-06-21T01:51:38.2119353Z             {
2026-06-21T01:51:38.2119461Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2119552Z               "line": 216
2026-06-21T01:51:38.2119635Z             },
2026-06-21T01:51:38.2119725Z             {
2026-06-21T01:51:38.2119833Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2119927Z               "line": 223
2026-06-21T01:51:38.2120010Z             },
2026-06-21T01:51:38.2120096Z             {
2026-06-21T01:51:38.2120218Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2120319Z               "line": 232
2026-06-21T01:51:38.2120405Z             },
2026-06-21T01:51:38.2120490Z             {
2026-06-21T01:51:38.2120605Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2120687Z               "line": 239
2026-06-21T01:51:38.2120777Z             },
2026-06-21T01:51:38.2120867Z             {
2026-06-21T01:51:38.2120973Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2121068Z               "line": 306
2026-06-21T01:51:38.2121153Z             },
2026-06-21T01:51:38.2121249Z             {
2026-06-21T01:51:38.2121359Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2121449Z               "line": 318
2026-06-21T01:51:38.2121535Z             },
2026-06-21T01:51:38.2121622Z             {
2026-06-21T01:51:38.2121735Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2121826Z               "line": 405
2026-06-21T01:51:38.2121918Z             }
2026-06-21T01:51:38.2121998Z           ]
2026-06-21T01:51:38.2122092Z         },
2026-06-21T01:51:38.2122187Z         "int": {
2026-06-21T01:51:38.2122277Z           "complete": false,
2026-06-21T01:51:38.2122371Z           "evidence": []
2026-06-21T01:51:38.2122452Z         },
2026-06-21T01:51:38.2122543Z         "unit": {
2026-06-21T01:51:38.2122629Z           "complete": true,
2026-06-21T01:51:38.2122724Z           "evidence": [
2026-06-21T01:51:38.2122814Z             {
2026-06-21T01:51:38.2122920Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2123010Z               "line": 487
2026-06-21T01:51:38.2123095Z             },
2026-06-21T01:51:38.2123182Z             {
2026-06-21T01:51:38.2123287Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2123382Z               "line": 528
2026-06-21T01:51:38.2123463Z             },
2026-06-21T01:51:38.2123549Z             {
2026-06-21T01:51:38.2123663Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2123739Z               "line": 541
2026-06-21T01:51:38.2123821Z             },
2026-06-21T01:51:38.2123902Z             {
2026-06-21T01:51:38.2124016Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2124102Z               "line": 627
2026-06-21T01:51:38.2124174Z             }
2026-06-21T01:51:38.2124259Z           ]
2026-06-21T01:51:38.2124336Z         }
2026-06-21T01:51:38.2124422Z       }
2026-06-21T01:51:38.2124503Z     },
2026-06-21T01:51:38.2124588Z     {
2026-06-21T01:51:38.2124697Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-21T01:51:38.2124875Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-21T01:51:38.2124968Z       "requiredStages": [
2026-06-21T01:51:38.2125045Z         "impl",
2026-06-21T01:51:38.2125253Z         "unit"
2026-06-21T01:51:38.2125333Z       ],
2026-06-21T01:51:38.2125424Z       "stages": {
2026-06-21T01:51:38.2125601Z         "doc": {
2026-06-21T01:51:38.2125686Z           "complete": false,
2026-06-21T01:51:38.2125773Z           "evidence": []
2026-06-21T01:51:38.2125853Z         },
2026-06-21T01:51:38.2125939Z         "impl": {
2026-06-21T01:51:38.2126024Z           "complete": true,
2026-06-21T01:51:38.2126116Z           "evidence": [
2026-06-21T01:51:38.2126202Z             {
2026-06-21T01:51:38.2126310Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:51:38.2126397Z               "line": 175
2026-06-21T01:51:38.2126483Z             },
2026-06-21T01:51:38.2126569Z             {
2026-06-21T01:51:38.2126688Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.2126807Z               "line": 171
2026-06-21T01:51:38.2126897Z             }
2026-06-21T01:51:38.2126979Z           ]
2026-06-21T01:51:38.2127065Z         },
2026-06-21T01:51:38.2127150Z         "int": {
2026-06-21T01:51:38.2127250Z           "complete": false,
2026-06-21T01:51:38.2127337Z           "evidence": []
2026-06-21T01:51:38.2127413Z         },
2026-06-21T01:51:38.2127493Z         "unit": {
2026-06-21T01:51:38.2127578Z           "complete": true,
2026-06-21T01:51:38.2127669Z           "evidence": [
2026-06-21T01:51:38.2127750Z             {
2026-06-21T01:51:38.2127857Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:51:38.2127947Z               "line": 297
2026-06-21T01:51:38.2128039Z             },
2026-06-21T01:51:38.2128125Z             {
2026-06-21T01:51:38.2128234Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.2128320Z               "line": 836
2026-06-21T01:51:38.2128401Z             },
2026-06-21T01:51:38.2128486Z             {
2026-06-21T01:51:38.2128591Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.2128678Z               "line": 849
2026-06-21T01:51:38.2128769Z             }
2026-06-21T01:51:38.2128848Z           ]
2026-06-21T01:51:38.2128935Z         }
2026-06-21T01:51:38.2129102Z       }
2026-06-21T01:51:38.2132998Z     },
2026-06-21T01:51:38.2133127Z     {
2026-06-21T01:51:38.2133246Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-21T01:51:38.2133389Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-21T01:51:38.2133480Z       "requiredStages": [
2026-06-21T01:51:38.2133565Z         "impl",
2026-06-21T01:51:38.2133646Z         "unit"
2026-06-21T01:51:38.2133727Z       ],
2026-06-21T01:51:38.2133814Z       "stages": {
2026-06-21T01:51:38.2133904Z         "doc": {
2026-06-21T01:51:38.2134008Z           "complete": false,
2026-06-21T01:51:38.2134095Z           "evidence": []
2026-06-21T01:51:38.2134186Z         },
2026-06-21T01:51:38.2134271Z         "impl": {
2026-06-21T01:51:38.2134357Z           "complete": true,
2026-06-21T01:51:38.2134438Z           "evidence": [
2026-06-21T01:51:38.2134524Z             {
2026-06-21T01:51:38.2134652Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.2134744Z               "line": 116
2026-06-21T01:51:38.2134829Z             },
2026-06-21T01:51:38.2134919Z             {
2026-06-21T01:51:38.2135049Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.2135139Z               "line": 507
2026-06-21T01:51:38.2135239Z             }
2026-06-21T01:51:38.2135325Z           ]
2026-06-21T01:51:38.2135402Z         },
2026-06-21T01:51:38.2135491Z         "int": {
2026-06-21T01:51:38.2135571Z           "complete": false,
2026-06-21T01:51:38.2135662Z           "evidence": []
2026-06-21T01:51:38.2135738Z         },
2026-06-21T01:51:38.2135827Z         "unit": {
2026-06-21T01:51:38.2135926Z           "complete": true,
2026-06-21T01:51:38.2136008Z           "evidence": [
2026-06-21T01:51:38.2136099Z             {
2026-06-21T01:51:38.2136222Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.2136314Z               "line": 541
2026-06-21T01:51:38.2136390Z             }
2026-06-21T01:51:38.2136629Z           ]
2026-06-21T01:51:38.2136747Z         }
2026-06-21T01:51:38.2136828Z       }
2026-06-21T01:51:38.2137043Z     },
2026-06-21T01:51:38.2137124Z     {
2026-06-21T01:51:38.2137253Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-21T01:51:38.2137419Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-21T01:51:38.2137524Z       "requiredStages": [
2026-06-21T01:51:38.2137616Z         "impl",
2026-06-21T01:51:38.2137701Z         "unit"
2026-06-21T01:51:38.2137791Z       ],
2026-06-21T01:51:38.2137873Z       "stages": {
2026-06-21T01:51:38.2137959Z         "doc": {
2026-06-21T01:51:38.2138058Z           "complete": false,
2026-06-21T01:51:38.2138138Z           "evidence": []
2026-06-21T01:51:38.2138224Z         },
2026-06-21T01:51:38.2138310Z         "impl": {
2026-06-21T01:51:38.2138403Z           "complete": true,
2026-06-21T01:51:38.2138484Z           "evidence": [
2026-06-21T01:51:38.2138570Z             {
2026-06-21T01:51:38.2138695Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.2138789Z               "line": 552
2026-06-21T01:51:38.2138885Z             },
2026-06-21T01:51:38.2139042Z             {
2026-06-21T01:51:38.2139171Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T01:51:38.2139262Z               "line": 28
2026-06-21T01:51:38.2139348Z             }
2026-06-21T01:51:38.2139423Z           ]
2026-06-21T01:51:38.2139515Z         },
2026-06-21T01:51:38.2139605Z         "int": {
2026-06-21T01:51:38.2139700Z           "complete": false,
2026-06-21T01:51:38.2139795Z           "evidence": []
2026-06-21T01:51:38.2139873Z         },
2026-06-21T01:51:38.2139957Z         "unit": {
2026-06-21T01:51:38.2140043Z           "complete": true,
2026-06-21T01:51:38.2140140Z           "evidence": [
2026-06-21T01:51:38.2140230Z             {
2026-06-21T01:51:38.2140334Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T01:51:38.2140415Z               "line": 229
2026-06-21T01:51:38.2140502Z             }
2026-06-21T01:51:38.2140596Z           ]
2026-06-21T01:51:38.2140668Z         }
2026-06-21T01:51:38.2140755Z       }
2026-06-21T01:51:38.2140841Z     },
2026-06-21T01:51:38.2140925Z     {
2026-06-21T01:51:38.2141043Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-21T01:51:38.2141168Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-21T01:51:38.2141272Z       "requiredStages": [],
2026-06-21T01:51:38.2141358Z       "stages": {
2026-06-21T01:51:38.2141449Z         "doc": {
2026-06-21T01:51:38.2141545Z           "complete": false,
2026-06-21T01:51:38.2141634Z           "evidence": []
2026-06-21T01:51:38.2141716Z         },
2026-06-21T01:51:38.2141803Z         "impl": {
2026-06-21T01:51:38.2141902Z           "complete": false,
2026-06-21T01:51:38.2141992Z           "evidence": []
2026-06-21T01:51:38.2142094Z         },
2026-06-21T01:51:38.2142183Z         "int": {
2026-06-21T01:51:38.2142273Z           "complete": false,
2026-06-21T01:51:38.2142370Z           "evidence": []
2026-06-21T01:51:38.2142446Z         },
2026-06-21T01:51:38.2142536Z         "unit": {
2026-06-21T01:51:38.2142631Z           "complete": false,
2026-06-21T01:51:38.2142714Z           "evidence": []
2026-06-21T01:51:38.2142808Z         }
2026-06-21T01:51:38.2142884Z       }
2026-06-21T01:51:38.2142960Z     },
2026-06-21T01:51:38.2143038Z     {
2026-06-21T01:51:38.2143160Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-21T01:51:38.2143307Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-21T01:51:38.2143407Z       "requiredStages": [
2026-06-21T01:51:38.2143491Z         "impl",
2026-06-21T01:51:38.2143572Z         "unit"
2026-06-21T01:51:38.2143663Z       ],
2026-06-21T01:51:38.2143745Z       "stages": {
2026-06-21T01:51:38.2143834Z         "doc": {
2026-06-21T01:51:38.2143929Z           "complete": false,
2026-06-21T01:51:38.2144040Z           "evidence": []
2026-06-21T01:51:38.2144125Z         },
2026-06-21T01:51:38.2144211Z         "impl": {
2026-06-21T01:51:38.2144312Z           "complete": true,
2026-06-21T01:51:38.2144502Z           "evidence": [
2026-06-21T01:51:38.2144593Z             {
2026-06-21T01:51:38.2144817Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T01:51:38.2144898Z               "line": 19
2026-06-21T01:51:38.2144980Z             },
2026-06-21T01:51:38.2145065Z             {
2026-06-21T01:51:38.2145184Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2145271Z               "line": 463
2026-06-21T01:51:38.2145351Z             },
2026-06-21T01:51:38.2145432Z             {
2026-06-21T01:51:38.2145552Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2145647Z               "line": 499
2026-06-21T01:51:38.2145727Z             },
2026-06-21T01:51:38.2145809Z             {
2026-06-21T01:51:38.2145925Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2146018Z               "line": 547
2026-06-21T01:51:38.2146103Z             },
2026-06-21T01:51:38.2146193Z             {
2026-06-21T01:51:38.2146317Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T01:51:38.2146406Z               "line": 15
2026-06-21T01:51:38.2146501Z             },
2026-06-21T01:51:38.2146583Z             {
2026-06-21T01:51:38.2146702Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T01:51:38.2146796Z               "line": 48
2026-06-21T01:51:38.2146884Z             },
2026-06-21T01:51:38.2146969Z             {
2026-06-21T01:51:38.2147078Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T01:51:38.2147164Z               "line": 119
2026-06-21T01:51:38.2147246Z             },
2026-06-21T01:51:38.2147327Z             {
2026-06-21T01:51:38.2147440Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2147523Z               "line": 3948
2026-06-21T01:51:38.2147612Z             }
2026-06-21T01:51:38.2147693Z           ]
2026-06-21T01:51:38.2147789Z         },
2026-06-21T01:51:38.2147861Z         "int": {
2026-06-21T01:51:38.2147965Z           "complete": false,
2026-06-21T01:51:38.2148051Z           "evidence": []
2026-06-21T01:51:38.2148133Z         },
2026-06-21T01:51:38.2148224Z         "unit": {
2026-06-21T01:51:38.2148312Z           "complete": true,
2026-06-21T01:51:38.2148409Z           "evidence": [
2026-06-21T01:51:38.2148482Z             {
2026-06-21T01:51:38.2148604Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2148694Z               "line": 765
2026-06-21T01:51:38.2148770Z             },
2026-06-21T01:51:38.2148856Z             {
2026-06-21T01:51:38.2149053Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T01:51:38.2149149Z               "line": 165
2026-06-21T01:51:38.2149227Z             },
2026-06-21T01:51:38.2149315Z             {
2026-06-21T01:51:38.2149431Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T01:51:38.2149517Z               "line": 175
2026-06-21T01:51:38.2149598Z             }
2026-06-21T01:51:38.2149683Z           ]
2026-06-21T01:51:38.2149774Z         }
2026-06-21T01:51:38.2149855Z       }
2026-06-21T01:51:38.2149936Z     },
2026-06-21T01:51:38.2150026Z     {
2026-06-21T01:51:38.2150137Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-21T01:51:38.2151147Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-21T01:51:38.2151237Z       "requiredStages": [
2026-06-21T01:51:38.2151325Z         "impl",
2026-06-21T01:51:38.2151415Z         "unit"
2026-06-21T01:51:38.2151495Z       ],
2026-06-21T01:51:38.2151575Z       "stages": {
2026-06-21T01:51:38.2151656Z         "doc": {
2026-06-21T01:51:38.2151747Z           "complete": false,
2026-06-21T01:51:38.2151828Z           "evidence": []
2026-06-21T01:51:38.2151913Z         },
2026-06-21T01:51:38.2151999Z         "impl": {
2026-06-21T01:51:38.2152090Z           "complete": true,
2026-06-21T01:51:38.2152300Z           "evidence": [
2026-06-21T01:51:38.2152381Z             {
2026-06-21T01:51:38.2152591Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.2152678Z               "line": 192
2026-06-21T01:51:38.2152762Z             },
2026-06-21T01:51:38.2152843Z             {
2026-06-21T01:51:38.2152954Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.2153053Z               "line": 279
2026-06-21T01:51:38.2153134Z             }
2026-06-21T01:51:38.2153225Z           ]
2026-06-21T01:51:38.2153307Z         },
2026-06-21T01:51:38.2153396Z         "int": {
2026-06-21T01:51:38.2153492Z           "complete": false,
2026-06-21T01:51:38.2153569Z           "evidence": []
2026-06-21T01:51:38.2153660Z         },
2026-06-21T01:51:38.2153739Z         "unit": {
2026-06-21T01:51:38.2153834Z           "complete": true,
2026-06-21T01:51:38.2153925Z           "evidence": [
2026-06-21T01:51:38.2154014Z             {
2026-06-21T01:51:38.2154123Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.2154209Z               "line": 470
2026-06-21T01:51:38.2154305Z             },
2026-06-21T01:51:38.2154385Z             {
2026-06-21T01:51:38.2154489Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.2154566Z               "line": 526
2026-06-21T01:51:38.2154652Z             }
2026-06-21T01:51:38.2154742Z           ]
2026-06-21T01:51:38.2154823Z         }
2026-06-21T01:51:38.2154901Z       }
2026-06-21T01:51:38.2154977Z     },
2026-06-21T01:51:38.2155062Z     {
2026-06-21T01:51:38.2155177Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-21T01:51:38.2159061Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-21T01:51:38.2159197Z       "requiredStages": [
2026-06-21T01:51:38.2159301Z         "impl",
2026-06-21T01:51:38.2159382Z         "unit",
2026-06-21T01:51:38.2159467Z         "int"
2026-06-21T01:51:38.2159556Z       ],
2026-06-21T01:51:38.2159647Z       "stages": {
2026-06-21T01:51:38.2159734Z         "doc": {
2026-06-21T01:51:38.2159819Z           "complete": false,
2026-06-21T01:51:38.2159909Z           "evidence": []
2026-06-21T01:51:38.2159986Z         },
2026-06-21T01:51:38.2160077Z         "impl": {
2026-06-21T01:51:38.2160158Z           "complete": true,
2026-06-21T01:51:38.2160248Z           "evidence": [
2026-06-21T01:51:38.2160334Z             {
2026-06-21T01:51:38.2160463Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:51:38.2160548Z               "line": 116
2026-06-21T01:51:38.2160626Z             },
2026-06-21T01:51:38.2160711Z             {
2026-06-21T01:51:38.2160825Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.2160916Z               "line": 132
2026-06-21T01:51:38.2161002Z             },
2026-06-21T01:51:38.2161202Z             {
2026-06-21T01:51:38.2161336Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:51:38.2161521Z               "line": 434
2026-06-21T01:51:38.2161599Z             },
2026-06-21T01:51:38.2161684Z             {
2026-06-21T01:51:38.2161807Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2161894Z               "line": 139
2026-06-21T01:51:38.2161980Z             },
2026-06-21T01:51:38.2162059Z             {
2026-06-21T01:51:38.2162168Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2162254Z               "line": 326
2026-06-21T01:51:38.2162337Z             },
2026-06-21T01:51:38.2162425Z             {
2026-06-21T01:51:38.2162536Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2162618Z               "line": 555
2026-06-21T01:51:38.2162708Z             }
2026-06-21T01:51:38.2162793Z           ]
2026-06-21T01:51:38.2162885Z         },
2026-06-21T01:51:38.2162965Z         "int": {
2026-06-21T01:51:38.2163060Z           "complete": true,
2026-06-21T01:51:38.2163151Z           "evidence": [
2026-06-21T01:51:38.2163238Z             {
2026-06-21T01:51:38.2163380Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T01:51:38.2163465Z               "line": 32
2026-06-21T01:51:38.2163557Z             }
2026-06-21T01:51:38.2163637Z           ]
2026-06-21T01:51:38.2163723Z         },
2026-06-21T01:51:38.2163810Z         "unit": {
2026-06-21T01:51:38.2163886Z           "complete": true,
2026-06-21T01:51:38.2163966Z           "evidence": [
2026-06-21T01:51:38.2164047Z             {
2026-06-21T01:51:38.2164168Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2164253Z               "line": 625
2026-06-21T01:51:38.2164337Z             },
2026-06-21T01:51:38.2164427Z             {
2026-06-21T01:51:38.2164551Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2164640Z               "line": 646
2026-06-21T01:51:38.2164725Z             },
2026-06-21T01:51:38.2164807Z             {
2026-06-21T01:51:38.2164917Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2165002Z               "line": 662
2026-06-21T01:51:38.2165088Z             },
2026-06-21T01:51:38.2165170Z             {
2026-06-21T01:51:38.2165283Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2165369Z               "line": 680
2026-06-21T01:51:38.2165447Z             },
2026-06-21T01:51:38.2165537Z             {
2026-06-21T01:51:38.2165641Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2165737Z               "line": 704
2026-06-21T01:51:38.2165818Z             }
2026-06-21T01:51:38.2165909Z           ]
2026-06-21T01:51:38.2165989Z         }
2026-06-21T01:51:38.2166071Z       }
2026-06-21T01:51:38.2166161Z     },
2026-06-21T01:51:38.2166242Z     {
2026-06-21T01:51:38.2166362Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-21T01:51:38.2166514Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-21T01:51:38.2166609Z       "requiredStages": [
2026-06-21T01:51:38.2166696Z         "impl",
2026-06-21T01:51:38.2166786Z         "unit"
2026-06-21T01:51:38.2166876Z       ],
2026-06-21T01:51:38.2166958Z       "stages": {
2026-06-21T01:51:38.2167049Z         "doc": {
2026-06-21T01:51:38.2167138Z           "complete": false,
2026-06-21T01:51:38.2167224Z           "evidence": []
2026-06-21T01:51:38.2167309Z         },
2026-06-21T01:51:38.2167400Z         "impl": {
2026-06-21T01:51:38.2167483Z           "complete": true,
2026-06-21T01:51:38.2167569Z           "evidence": [
2026-06-21T01:51:38.2167655Z             {
2026-06-21T01:51:38.2167770Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:51:38.2167855Z               "line": 35
2026-06-21T01:51:38.2167936Z             }
2026-06-21T01:51:38.2168018Z           ]
2026-06-21T01:51:38.2168109Z         },
2026-06-21T01:51:38.2168189Z         "int": {
2026-06-21T01:51:38.2168404Z           "complete": false,
2026-06-21T01:51:38.2168494Z           "evidence": []
2026-06-21T01:51:38.2168580Z         },
2026-06-21T01:51:38.2168737Z         "unit": {
2026-06-21T01:51:38.2168842Z           "complete": true,
2026-06-21T01:51:38.2168929Z           "evidence": [
2026-06-21T01:51:38.2169099Z             {
2026-06-21T01:51:38.2169214Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:51:38.2169306Z               "line": 220
2026-06-21T01:51:38.2169390Z             }
2026-06-21T01:51:38.2169472Z           ]
2026-06-21T01:51:38.2169558Z         }
2026-06-21T01:51:38.2169635Z       }
2026-06-21T01:51:38.2169724Z     },
2026-06-21T01:51:38.2169814Z     {
2026-06-21T01:51:38.2169929Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-21T01:51:38.2173106Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-21T01:51:38.2173220Z       "requiredStages": [
2026-06-21T01:51:38.2173306Z         "impl",
2026-06-21T01:51:38.2173391Z         "unit",
2026-06-21T01:51:38.2173469Z         "int"
2026-06-21T01:51:38.2173549Z       ],
2026-06-21T01:51:38.2173634Z       "stages": {
2026-06-21T01:51:38.2173711Z         "doc": {
2026-06-21T01:51:38.2173807Z           "complete": false,
2026-06-21T01:51:38.2173897Z           "evidence": []
2026-06-21T01:51:38.2173987Z         },
2026-06-21T01:51:38.2174070Z         "impl": {
2026-06-21T01:51:38.2174155Z           "complete": true,
2026-06-21T01:51:38.2174246Z           "evidence": [
2026-06-21T01:51:38.2174326Z             {
2026-06-21T01:51:38.2174456Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.2174535Z               "line": 202
2026-06-21T01:51:38.2174621Z             },
2026-06-21T01:51:38.2174704Z             {
2026-06-21T01:51:38.2174813Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T01:51:38.2174892Z               "line": 107
2026-06-21T01:51:38.2174978Z             },
2026-06-21T01:51:38.2175059Z             {
2026-06-21T01:51:38.2175177Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T01:51:38.2175262Z               "line": 138
2026-06-21T01:51:38.2175353Z             },
2026-06-21T01:51:38.2175434Z             {
2026-06-21T01:51:38.2175552Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2175634Z               "line": 209
2026-06-21T01:51:38.2175721Z             },
2026-06-21T01:51:38.2175806Z             {
2026-06-21T01:51:38.2175929Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2176016Z               "line": 246
2026-06-21T01:51:38.2176101Z             },
2026-06-21T01:51:38.2176186Z             {
2026-06-21T01:51:38.2176293Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2176383Z               "line": 379
2026-06-21T01:51:38.2176464Z             }
2026-06-21T01:51:38.2176554Z           ]
2026-06-21T01:51:38.2176636Z         },
2026-06-21T01:51:38.2176721Z         "int": {
2026-06-21T01:51:38.2176821Z           "complete": true,
2026-06-21T01:51:38.2177013Z           "evidence": [
2026-06-21T01:51:38.2177102Z             {
2026-06-21T01:51:38.2177342Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-21T01:51:38.2177441Z               "line": 17
2026-06-21T01:51:38.2177523Z             }
2026-06-21T01:51:38.2177605Z           ]
2026-06-21T01:51:38.2177694Z         },
2026-06-21T01:51:38.2177774Z         "unit": {
2026-06-21T01:51:38.2177869Z           "complete": true,
2026-06-21T01:51:38.2177955Z           "evidence": [
2026-06-21T01:51:38.2178035Z             {
2026-06-21T01:51:38.2178167Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.2178253Z               "line": 982
2026-06-21T01:51:38.2178330Z             }
2026-06-21T01:51:38.2178406Z           ]
2026-06-21T01:51:38.2178491Z         }
2026-06-21T01:51:38.2178569Z       }
2026-06-21T01:51:38.2178664Z     },
2026-06-21T01:51:38.2178744Z     {
2026-06-21T01:51:38.2178850Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-21T01:51:38.2179203Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-21T01:51:38.2179297Z       "requiredStages": [
2026-06-21T01:51:38.2179393Z         "impl",
2026-06-21T01:51:38.2179479Z         "unit"
2026-06-21T01:51:38.2179556Z       ],
2026-06-21T01:51:38.2179636Z       "stages": {
2026-06-21T01:51:38.2179717Z         "doc": {
2026-06-21T01:51:38.2179813Z           "complete": false,
2026-06-21T01:51:38.2179890Z           "evidence": []
2026-06-21T01:51:38.2179974Z         },
2026-06-21T01:51:38.2180056Z         "impl": {
2026-06-21T01:51:38.2180147Z           "complete": true,
2026-06-21T01:51:38.2180233Z           "evidence": [
2026-06-21T01:51:38.2180317Z             {
2026-06-21T01:51:38.2180445Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:51:38.2180517Z               "line": 405
2026-06-21T01:51:38.2180596Z             },
2026-06-21T01:51:38.2180682Z             {
2026-06-21T01:51:38.2180806Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.2180888Z               "line": 409
2026-06-21T01:51:38.2180973Z             },
2026-06-21T01:51:38.2181053Z             {
2026-06-21T01:51:38.2181173Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:51:38.2181268Z               "line": 156
2026-06-21T01:51:38.2181349Z             }
2026-06-21T01:51:38.2181426Z           ]
2026-06-21T01:51:38.2181507Z         },
2026-06-21T01:51:38.2181588Z         "int": {
2026-06-21T01:51:38.2181682Z           "complete": false,
2026-06-21T01:51:38.2181770Z           "evidence": []
2026-06-21T01:51:38.2181855Z         },
2026-06-21T01:51:38.2181936Z         "unit": {
2026-06-21T01:51:38.2182026Z           "complete": true,
2026-06-21T01:51:38.2182113Z           "evidence": [
2026-06-21T01:51:38.2182193Z             {
2026-06-21T01:51:38.2182317Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.2182404Z               "line": 865
2026-06-21T01:51:38.2182493Z             },
2026-06-21T01:51:38.2182584Z             {
2026-06-21T01:51:38.2182705Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.2182818Z               "line": 879
2026-06-21T01:51:38.2182899Z             },
2026-06-21T01:51:38.2182986Z             {
2026-06-21T01:51:38.2183100Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.2183184Z               "line": 898
2026-06-21T01:51:38.2183269Z             },
2026-06-21T01:51:38.2183341Z             {
2026-06-21T01:51:38.2183457Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.2183542Z               "line": 915
2026-06-21T01:51:38.2183627Z             },
2026-06-21T01:51:38.2183695Z             {
2026-06-21T01:51:38.2183823Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T01:51:38.2183913Z               "line": 441
2026-06-21T01:51:38.2183996Z             }
2026-06-21T01:51:38.2184081Z           ]
2026-06-21T01:51:38.2184166Z         }
2026-06-21T01:51:38.2184362Z       }
2026-06-21T01:51:38.2184443Z     },
2026-06-21T01:51:38.2184524Z     {
2026-06-21T01:51:38.2184734Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-21T01:51:38.2194536Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-21T01:51:38.2194679Z       "requiredStages": [
2026-06-21T01:51:38.2194764Z         "doc",
2026-06-21T01:51:38.2194846Z         "impl",
2026-06-21T01:51:38.2194927Z         "unit",
2026-06-21T01:51:38.2195012Z         "int"
2026-06-21T01:51:38.2195089Z       ],
2026-06-21T01:51:38.2195170Z       "stages": {
2026-06-21T01:51:38.2195251Z         "doc": {
2026-06-21T01:51:38.2195351Z           "complete": true,
2026-06-21T01:51:38.2195436Z           "evidence": [
2026-06-21T01:51:38.2195524Z             {
2026-06-21T01:51:38.2195623Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.2195713Z               "line": 420
2026-06-21T01:51:38.2195790Z             },
2026-06-21T01:51:38.2195975Z             {
2026-06-21T01:51:38.2196089Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.2196264Z               "line": 402
2026-06-21T01:51:38.2196344Z             }
2026-06-21T01:51:38.2196430Z           ]
2026-06-21T01:51:38.2196511Z         },
2026-06-21T01:51:38.2196593Z         "impl": {
2026-06-21T01:51:38.2196682Z           "complete": true,
2026-06-21T01:51:38.2196768Z           "evidence": [
2026-06-21T01:51:38.2196846Z             {
2026-06-21T01:51:38.2196974Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.2197064Z               "line": 797
2026-06-21T01:51:38.2197151Z             },
2026-06-21T01:51:38.2197231Z             {
2026-06-21T01:51:38.2197354Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.2197446Z               "line": 822
2026-06-21T01:51:38.2197532Z             },
2026-06-21T01:51:38.2197627Z             {
2026-06-21T01:51:38.2197737Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.2197837Z               "line": 839
2026-06-21T01:51:38.2197918Z             },
2026-06-21T01:51:38.2197998Z             {
2026-06-21T01:51:38.2198114Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.2198194Z               "line": 854
2026-06-21T01:51:38.2198275Z             },
2026-06-21T01:51:38.2198357Z             {
2026-06-21T01:51:38.2198472Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.2198551Z               "line": 874
2026-06-21T01:51:38.2198643Z             },
2026-06-21T01:51:38.2198729Z             {
2026-06-21T01:51:38.2198838Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.2198932Z               "line": 964
2026-06-21T01:51:38.2199108Z             },
2026-06-21T01:51:38.2199188Z             {
2026-06-21T01:51:38.2199297Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.2199393Z               "line": 1016
2026-06-21T01:51:38.2199479Z             },
2026-06-21T01:51:38.2199568Z             {
2026-06-21T01:51:38.2199674Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.2199765Z               "line": 1075
2026-06-21T01:51:38.2199850Z             },
2026-06-21T01:51:38.2199936Z             {
2026-06-21T01:51:38.2200056Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:51:38.2200137Z               "line": 527
2026-06-21T01:51:38.2200212Z             }
2026-06-21T01:51:38.2200299Z           ]
2026-06-21T01:51:38.2200381Z         },
2026-06-21T01:51:38.2200466Z         "int": {
2026-06-21T01:51:38.2200566Z           "complete": true,
2026-06-21T01:51:38.2200652Z           "evidence": [
2026-06-21T01:51:38.2200728Z             {
2026-06-21T01:51:38.2200837Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T01:51:38.2200929Z               "line": 35
2026-06-21T01:51:38.2201001Z             },
2026-06-21T01:51:38.2201085Z             {
2026-06-21T01:51:38.2201200Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T01:51:38.2201287Z               "line": 559
2026-06-21T01:51:38.2201363Z             },
2026-06-21T01:51:38.2201442Z             {
2026-06-21T01:51:38.2201551Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T01:51:38.2201637Z               "line": 580
2026-06-21T01:51:38.2201726Z             }
2026-06-21T01:51:38.2201811Z           ]
2026-06-21T01:51:38.2201893Z         },
2026-06-21T01:51:38.2201969Z         "unit": {
2026-06-21T01:51:38.2202064Z           "complete": true,
2026-06-21T01:51:38.2202159Z           "evidence": [
2026-06-21T01:51:38.2202241Z             {
2026-06-21T01:51:38.2202361Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.2202455Z               "line": 1202
2026-06-21T01:51:38.2202532Z             },
2026-06-21T01:51:38.2202618Z             {
2026-06-21T01:51:38.2202731Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.2202817Z               "line": 1246
2026-06-21T01:51:38.2203028Z             },
2026-06-21T01:51:38.2203118Z             {
2026-06-21T01:51:38.2203238Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.2203409Z               "line": 1260
2026-06-21T01:51:38.2203495Z             },
2026-06-21T01:51:38.2203576Z             {
2026-06-21T01:51:38.2203700Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.2203776Z               "line": 1278
2026-06-21T01:51:38.2203859Z             },
2026-06-21T01:51:38.2203956Z             {
2026-06-21T01:51:38.2204057Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.2204144Z               "line": 1302
2026-06-21T01:51:38.2204225Z             },
2026-06-21T01:51:38.2204309Z             {
2026-06-21T01:51:38.2204413Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.2204500Z               "line": 1529
2026-06-21T01:51:38.2204586Z             }
2026-06-21T01:51:38.2204662Z           ]
2026-06-21T01:51:38.2204752Z         }
2026-06-21T01:51:38.2204825Z       }
2026-06-21T01:51:38.2204910Z     },
2026-06-21T01:51:38.2204995Z     {
2026-06-21T01:51:38.2205101Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-21T01:51:38.2207233Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-21T01:51:38.2207338Z       "requiredStages": [
2026-06-21T01:51:38.2207430Z         "unit",
2026-06-21T01:51:38.2207520Z         "int"
2026-06-21T01:51:38.2207605Z       ],
2026-06-21T01:51:38.2207706Z       "stages": {
2026-06-21T01:51:38.2207787Z         "doc": {
2026-06-21T01:51:38.2207872Z           "complete": true,
2026-06-21T01:51:38.2207958Z           "evidence": [
2026-06-21T01:51:38.2208045Z             {
2026-06-21T01:51:38.2208158Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.2208244Z               "line": 381
2026-06-21T01:51:38.2208326Z             }
2026-06-21T01:51:38.2208406Z           ]
2026-06-21T01:51:38.2208497Z         },
2026-06-21T01:51:38.2208583Z         "impl": {
2026-06-21T01:51:38.2208689Z           "complete": true,
2026-06-21T01:51:38.2208778Z           "evidence": [
2026-06-21T01:51:38.2208854Z             {
2026-06-21T01:51:38.2209055Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.2209141Z               "line": 100
2026-06-21T01:51:38.2209227Z             }
2026-06-21T01:51:38.2209309Z           ]
2026-06-21T01:51:38.2209403Z         },
2026-06-21T01:51:38.2209478Z         "int": {
2026-06-21T01:51:38.2209559Z           "complete": true,
2026-06-21T01:51:38.2209650Z           "evidence": [
2026-06-21T01:51:38.2209734Z             {
2026-06-21T01:51:38.2209857Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:51:38.2209938Z               "line": 1042
2026-06-21T01:51:38.2210030Z             }
2026-06-21T01:51:38.2210110Z           ]
2026-06-21T01:51:38.2210191Z         },
2026-06-21T01:51:38.2210283Z         "unit": {
2026-06-21T01:51:38.2210364Z           "complete": true,
2026-06-21T01:51:38.2210453Z           "evidence": [
2026-06-21T01:51:38.2210535Z             {
2026-06-21T01:51:38.2210645Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.2210735Z               "line": 2217
2026-06-21T01:51:38.2210811Z             }
2026-06-21T01:51:38.2210902Z           ]
2026-06-21T01:51:38.2210987Z         }
2026-06-21T01:51:38.2211068Z       }
2026-06-21T01:51:38.2211260Z     },
2026-06-21T01:51:38.2211344Z     {
2026-06-21T01:51:38.2211460Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-21T01:51:38.2212343Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-21T01:51:38.2212448Z       "requiredStages": [
2026-06-21T01:51:38.2212525Z         "doc",
2026-06-21T01:51:38.2212615Z         "impl",
2026-06-21T01:51:38.2212695Z         "unit"
2026-06-21T01:51:38.2212777Z       ],
2026-06-21T01:51:38.2212863Z       "stages": {
2026-06-21T01:51:38.2212944Z         "doc": {
2026-06-21T01:51:38.2213039Z           "complete": true,
2026-06-21T01:51:38.2213126Z           "evidence": [
2026-06-21T01:51:38.2213211Z             {
2026-06-21T01:51:38.2213329Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.2213417Z               "line": 366
2026-06-21T01:51:38.2213502Z             }
2026-06-21T01:51:38.2213588Z           ]
2026-06-21T01:51:38.2213673Z         },
2026-06-21T01:51:38.2213755Z         "impl": {
2026-06-21T01:51:38.2213854Z           "complete": true,
2026-06-21T01:51:38.2213949Z           "evidence": [
2026-06-21T01:51:38.2214031Z             {
2026-06-21T01:51:38.2214151Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T01:51:38.2214236Z               "line": 87
2026-06-21T01:51:38.2214317Z             },
2026-06-21T01:51:38.2214399Z             {
2026-06-21T01:51:38.2214512Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T01:51:38.2214603Z               "line": 105
2026-06-21T01:51:38.2214681Z             },
2026-06-21T01:51:38.2214767Z             {
2026-06-21T01:51:38.2214888Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:51:38.2214983Z               "line": 55
2026-06-21T01:51:38.2215070Z             },
2026-06-21T01:51:38.2218929Z             {
2026-06-21T01:51:38.2219192Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.2219281Z               "line": 31
2026-06-21T01:51:38.2219367Z             },
2026-06-21T01:51:38.2219453Z             {
2026-06-21T01:51:38.2219587Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.2219672Z               "line": 446
2026-06-21T01:51:38.2219748Z             },
2026-06-21T01:51:38.2219831Z             {
2026-06-21T01:51:38.2219963Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:51:38.2220048Z               "line": 95
2026-06-21T01:51:38.2220129Z             },
2026-06-21T01:51:38.2220214Z             {
2026-06-21T01:51:38.2220346Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:51:38.2220432Z               "line": 29
2026-06-21T01:51:38.2220508Z             },
2026-06-21T01:51:38.2220590Z             {
2026-06-21T01:51:38.2220712Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:51:38.2220795Z               "line": 104
2026-06-21T01:51:38.2220881Z             },
2026-06-21T01:51:38.2220961Z             {
2026-06-21T01:51:38.2221090Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2221172Z               "line": 208
2026-06-21T01:51:38.2221253Z             },
2026-06-21T01:51:38.2221337Z             {
2026-06-21T01:51:38.2221448Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T01:51:38.2221538Z               "line": 28
2026-06-21T01:51:38.2221624Z             },
2026-06-21T01:51:38.2221705Z             {
2026-06-21T01:51:38.2221825Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T01:51:38.2221904Z               "line": 74
2026-06-21T01:51:38.2221986Z             },
2026-06-21T01:51:38.2222073Z             {
2026-06-21T01:51:38.2222205Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T01:51:38.2222291Z               "line": 32
2026-06-21T01:51:38.2222374Z             },
2026-06-21T01:51:38.2222605Z             {
2026-06-21T01:51:38.2222724Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:51:38.2222908Z               "line": 40
2026-06-21T01:51:38.2222993Z             },
2026-06-21T01:51:38.2223070Z             {
2026-06-21T01:51:38.2223185Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:51:38.2223265Z               "line": 184
2026-06-21T01:51:38.2223347Z             },
2026-06-21T01:51:38.2223419Z             {
2026-06-21T01:51:38.2223528Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T01:51:38.2223614Z               "line": 61
2026-06-21T01:51:38.2223700Z             },
2026-06-21T01:51:38.2223780Z             {
2026-06-21T01:51:38.2223889Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T01:51:38.2223977Z               "line": 131
2026-06-21T01:51:38.2224053Z             },
2026-06-21T01:51:38.2224138Z             {
2026-06-21T01:51:38.2224248Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T01:51:38.2224335Z               "line": 223
2026-06-21T01:51:38.2224419Z             },
2026-06-21T01:51:38.2224501Z             {
2026-06-21T01:51:38.2224616Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T01:51:38.2224702Z               "line": 37
2026-06-21T01:51:38.2224781Z             },
2026-06-21T01:51:38.2224868Z             {
2026-06-21T01:51:38.2224993Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T01:51:38.2225082Z               "line": 38
2026-06-21T01:51:38.2225163Z             },
2026-06-21T01:51:38.2225246Z             {
2026-06-21T01:51:38.2225360Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T01:51:38.2225453Z               "line": 36
2026-06-21T01:51:38.2225538Z             },
2026-06-21T01:51:38.2225625Z             {
2026-06-21T01:51:38.2225730Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T01:51:38.2225820Z               "line": 40
2026-06-21T01:51:38.2225897Z             }
2026-06-21T01:51:38.2225978Z           ]
2026-06-21T01:51:38.2226064Z         },
2026-06-21T01:51:38.2226139Z         "int": {
2026-06-21T01:51:38.2226241Z           "complete": false,
2026-06-21T01:51:38.2226326Z           "evidence": []
2026-06-21T01:51:38.2226411Z         },
2026-06-21T01:51:38.2226492Z         "unit": {
2026-06-21T01:51:38.2226579Z           "complete": true,
2026-06-21T01:51:38.2226674Z           "evidence": [
2026-06-21T01:51:38.2226754Z             {
2026-06-21T01:51:38.2226870Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:51:38.2226960Z               "line": 212
2026-06-21T01:51:38.2227050Z             },
2026-06-21T01:51:38.2227141Z             {
2026-06-21T01:51:38.2227261Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T01:51:38.2227355Z               "line": 136
2026-06-21T01:51:38.2227446Z             },
2026-06-21T01:51:38.2227529Z             {
2026-06-21T01:51:38.2227655Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T01:51:38.2227745Z               "line": 685
2026-06-21T01:51:38.2227831Z             },
2026-06-21T01:51:38.2227912Z             {
2026-06-21T01:51:38.2228039Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T01:51:38.2228134Z               "line": 224
2026-06-21T01:51:38.2228221Z             },
2026-06-21T01:51:38.2228306Z             {
2026-06-21T01:51:38.2228415Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T01:51:38.2228502Z               "line": 206
2026-06-21T01:51:38.2228578Z             },
2026-06-21T01:51:38.2228663Z             {
2026-06-21T01:51:38.2228773Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T01:51:38.2228855Z               "line": 112
2026-06-21T01:51:38.2229026Z             },
2026-06-21T01:51:38.2229103Z             {
2026-06-21T01:51:38.2229222Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T01:51:38.2229307Z               "line": 157
2026-06-21T01:51:38.2229393Z             },
2026-06-21T01:51:38.2229470Z             {
2026-06-21T01:51:38.2229698Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T01:51:38.2229785Z               "line": 215
2026-06-21T01:51:38.2229984Z             },
2026-06-21T01:51:38.2230071Z             {
2026-06-21T01:51:38.2230184Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T01:51:38.2230271Z               "line": 141
2026-06-21T01:51:38.2230362Z             },
2026-06-21T01:51:38.2230434Z             {
2026-06-21T01:51:38.2230542Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T01:51:38.2230631Z               "line": 162
2026-06-21T01:51:38.2230713Z             }
2026-06-21T01:51:38.2230793Z           ]
2026-06-21T01:51:38.2230882Z         }
2026-06-21T01:51:38.2230963Z       }
2026-06-21T01:51:38.2231050Z     },
2026-06-21T01:51:38.2231136Z     {
2026-06-21T01:51:38.2231263Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-21T01:51:38.2233170Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-21T01:51:38.2233285Z       "requiredStages": [
2026-06-21T01:51:38.2233365Z         "doc",
2026-06-21T01:51:38.2233449Z         "impl",
2026-06-21T01:51:38.2233525Z         "unit",
2026-06-21T01:51:38.2233607Z         "int"
2026-06-21T01:51:38.2233693Z       ],
2026-06-21T01:51:38.2233778Z       "stages": {
2026-06-21T01:51:38.2233864Z         "doc": {
2026-06-21T01:51:38.2233946Z           "complete": true,
2026-06-21T01:51:38.2234031Z           "evidence": [
2026-06-21T01:51:38.2234111Z             {
2026-06-21T01:51:38.2234232Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.2234313Z               "line": 250
2026-06-21T01:51:38.2234398Z             }
2026-06-21T01:51:38.2234483Z           ]
2026-06-21T01:51:38.2234565Z         },
2026-06-21T01:51:38.2234656Z         "impl": {
2026-06-21T01:51:38.2234746Z           "complete": true,
2026-06-21T01:51:38.2234832Z           "evidence": [
2026-06-21T01:51:38.2234909Z             {
2026-06-21T01:51:38.2235023Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T01:51:38.2235108Z               "line": 135
2026-06-21T01:51:38.2235195Z             },
2026-06-21T01:51:38.2235280Z             {
2026-06-21T01:51:38.2235390Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T01:51:38.2235481Z               "line": 157
2026-06-21T01:51:38.2235572Z             }
2026-06-21T01:51:38.2235656Z           ]
2026-06-21T01:51:38.2235742Z         },
2026-06-21T01:51:38.2235825Z         "int": {
2026-06-21T01:51:38.2235929Z           "complete": true,
2026-06-21T01:51:38.2236013Z           "evidence": [
2026-06-21T01:51:38.2236094Z             {
2026-06-21T01:51:38.2236228Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-21T01:51:38.2236319Z               "line": 15
2026-06-21T01:51:38.2236404Z             }
2026-06-21T01:51:38.2236485Z           ]
2026-06-21T01:51:38.2236571Z         },
2026-06-21T01:51:38.2236661Z         "unit": {
2026-06-21T01:51:38.2236757Z           "complete": true,
2026-06-21T01:51:38.2236849Z           "evidence": [
2026-06-21T01:51:38.2236930Z             {
2026-06-21T01:51:38.2237053Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-21T01:51:38.2237139Z               "line": 233
2026-06-21T01:51:38.2237229Z             }
2026-06-21T01:51:38.2237310Z           ]
2026-06-21T01:51:38.2237391Z         }
2026-06-21T01:51:38.2237478Z       }
2026-06-21T01:51:38.2237558Z     },
2026-06-21T01:51:38.2237644Z     {
2026-06-21T01:51:38.2237877Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-21T01:51:38.2238045Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-21T01:51:38.2238215Z       "requiredStages": [
2026-06-21T01:51:38.2238301Z         "impl",
2026-06-21T01:51:38.2238387Z         "unit"
2026-06-21T01:51:38.2238468Z       ],
2026-06-21T01:51:38.2238551Z       "stages": {
2026-06-21T01:51:38.2238627Z         "doc": {
2026-06-21T01:51:38.2238723Z           "complete": false,
2026-06-21T01:51:38.2238815Z           "evidence": []
2026-06-21T01:51:38.2238899Z         },
2026-06-21T01:51:38.2239072Z         "impl": {
2026-06-21T01:51:38.2239158Z           "complete": true,
2026-06-21T01:51:38.2239242Z           "evidence": [
2026-06-21T01:51:38.2239324Z             {
2026-06-21T01:51:38.2239448Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:51:38.2239533Z               "line": 95
2026-06-21T01:51:38.2239619Z             },
2026-06-21T01:51:38.2239702Z             {
2026-06-21T01:51:38.2239825Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.2239910Z               "line": 117
2026-06-21T01:51:38.2239987Z             }
2026-06-21T01:51:38.2240073Z           ]
2026-06-21T01:51:38.2240154Z         },
2026-06-21T01:51:38.2240235Z         "int": {
2026-06-21T01:51:38.2240336Z           "complete": false,
2026-06-21T01:51:38.2240435Z           "evidence": []
2026-06-21T01:51:38.2240520Z         },
2026-06-21T01:51:38.2240603Z         "unit": {
2026-06-21T01:51:38.2240702Z           "complete": true,
2026-06-21T01:51:38.2240787Z           "evidence": [
2026-06-21T01:51:38.2240874Z             {
2026-06-21T01:51:38.2241036Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:51:38.2241149Z               "line": 250
2026-06-21T01:51:38.2241278Z             },
2026-06-21T01:51:38.2241358Z             {
2026-06-21T01:51:38.2241480Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:51:38.2241562Z               "line": 412
2026-06-21T01:51:38.2241648Z             },
2026-06-21T01:51:38.2241747Z             {
2026-06-21T01:51:38.2241871Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.2241958Z               "line": 611
2026-06-21T01:51:38.2242044Z             },
2026-06-21T01:51:38.2242134Z             {
2026-06-21T01:51:38.2242245Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.2242339Z               "line": 669
2026-06-21T01:51:38.2242424Z             }
2026-06-21T01:51:38.2242506Z           ]
2026-06-21T01:51:38.2242588Z         }
2026-06-21T01:51:38.2242668Z       }
2026-06-21T01:51:38.2242758Z     },
2026-06-21T01:51:38.2242825Z     {
2026-06-21T01:51:38.2242940Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-21T01:51:38.2245397Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-21T01:51:38.2245497Z       "requiredStages": [
2026-06-21T01:51:38.2245578Z         "impl",
2026-06-21T01:51:38.2245663Z         "unit",
2026-06-21T01:51:38.2245751Z         "int"
2026-06-21T01:51:38.2245836Z       ],
2026-06-21T01:51:38.2245916Z       "stages": {
2026-06-21T01:51:38.2246012Z         "doc": {
2026-06-21T01:51:38.2246108Z           "complete": false,
2026-06-21T01:51:38.2246193Z           "evidence": []
2026-06-21T01:51:38.2246404Z         },
2026-06-21T01:51:38.2246489Z         "impl": {
2026-06-21T01:51:38.2246592Z           "complete": true,
2026-06-21T01:51:38.2246779Z           "evidence": [
2026-06-21T01:51:38.2246879Z             {
2026-06-21T01:51:38.2247012Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.2247099Z               "line": 925
2026-06-21T01:51:38.2247194Z             },
2026-06-21T01:51:38.2247274Z             {
2026-06-21T01:51:38.2247390Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.2247480Z               "line": 994
2026-06-21T01:51:38.2247560Z             }
2026-06-21T01:51:38.2247646Z           ]
2026-06-21T01:51:38.2247728Z         },
2026-06-21T01:51:38.2247818Z         "int": {
2026-06-21T01:51:38.2247908Z           "complete": true,
2026-06-21T01:51:38.2247995Z           "evidence": [
2026-06-21T01:51:38.2248081Z             {
2026-06-21T01:51:38.2248213Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T01:51:38.2248315Z               "line": 187
2026-06-21T01:51:38.2248396Z             },
2026-06-21T01:51:38.2248480Z             {
2026-06-21T01:51:38.2248600Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T01:51:38.2248692Z               "line": 343
2026-06-21T01:51:38.2248776Z             }
2026-06-21T01:51:38.2248861Z           ]
2026-06-21T01:51:38.2249051Z         },
2026-06-21T01:51:38.2249145Z         "unit": {
2026-06-21T01:51:38.2249245Z           "complete": true,
2026-06-21T01:51:38.2249331Z           "evidence": [
2026-06-21T01:51:38.2249417Z             {
2026-06-21T01:51:38.2249526Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.2249617Z               "line": 1206
2026-06-21T01:51:38.2249703Z             },
2026-06-21T01:51:38.2249778Z             {
2026-06-21T01:51:38.2249884Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2249971Z               "line": 8116
2026-06-21T01:51:38.2250061Z             }
2026-06-21T01:51:38.2250146Z           ]
2026-06-21T01:51:38.2250233Z         }
2026-06-21T01:51:38.2250318Z       }
2026-06-21T01:51:38.2250404Z     },
2026-06-21T01:51:38.2250485Z     {
2026-06-21T01:51:38.2250591Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-21T01:51:38.2250775Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-21T01:51:38.2250858Z       "requiredStages": [
2026-06-21T01:51:38.2250939Z         "impl",
2026-06-21T01:51:38.2251028Z         "unit"
2026-06-21T01:51:38.2251114Z       ],
2026-06-21T01:51:38.2251196Z       "stages": {
2026-06-21T01:51:38.2251291Z         "doc": {
2026-06-21T01:51:38.2251386Z           "complete": false,
2026-06-21T01:51:38.2251468Z           "evidence": []
2026-06-21T01:51:38.2251554Z         },
2026-06-21T01:51:38.2251643Z         "impl": {
2026-06-21T01:51:38.2251733Z           "complete": true,
2026-06-21T01:51:38.2251814Z           "evidence": [
2026-06-21T01:51:38.2251886Z             {
2026-06-21T01:51:38.2252012Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2252097Z               "line": 262
2026-06-21T01:51:38.2252189Z             },
2026-06-21T01:51:38.2252275Z             {
2026-06-21T01:51:38.2252384Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2252475Z               "line": 307
2026-06-21T01:51:38.2252561Z             },
2026-06-21T01:51:38.2252655Z             {
2026-06-21T01:51:38.2252766Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2252866Z               "line": 319
2026-06-21T01:51:38.2252951Z             }
2026-06-21T01:51:38.2253037Z           ]
2026-06-21T01:51:38.2253119Z         },
2026-06-21T01:51:38.2253195Z         "int": {
2026-06-21T01:51:38.2253294Z           "complete": false,
2026-06-21T01:51:38.2253375Z           "evidence": []
2026-06-21T01:51:38.2253472Z         },
2026-06-21T01:51:38.2253566Z         "unit": {
2026-06-21T01:51:38.2253652Z           "complete": true,
2026-06-21T01:51:38.2253749Z           "evidence": [
2026-06-21T01:51:38.2253967Z             {
2026-06-21T01:51:38.2254083Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2254262Z               "line": 455
2026-06-21T01:51:38.2254357Z             },
2026-06-21T01:51:38.2254461Z             {
2026-06-21T01:51:38.2254574Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2254664Z               "line": 499
2026-06-21T01:51:38.2254751Z             }
2026-06-21T01:51:38.2254837Z           ]
2026-06-21T01:51:38.2254927Z         }
2026-06-21T01:51:38.2255012Z       }
2026-06-21T01:51:38.2255099Z     },
2026-06-21T01:51:38.2255180Z     {
2026-06-21T01:51:38.2255279Z       "id": "REQ-HOST-RUN-1",
2026-06-21T01:51:38.2257768Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-21T01:51:38.2257877Z       "requiredStages": [
2026-06-21T01:51:38.2257969Z         "impl",
2026-06-21T01:51:38.2258064Z         "unit",
2026-06-21T01:51:38.2258148Z         "int"
2026-06-21T01:51:38.2258231Z       ],
2026-06-21T01:51:38.2258312Z       "stages": {
2026-06-21T01:51:38.2258393Z         "doc": {
2026-06-21T01:51:38.2258478Z           "complete": false,
2026-06-21T01:51:38.2258565Z           "evidence": []
2026-06-21T01:51:38.2258655Z         },
2026-06-21T01:51:38.2258736Z         "impl": {
2026-06-21T01:51:38.2258831Z           "complete": true,
2026-06-21T01:51:38.2258927Z           "evidence": [
2026-06-21T01:51:38.2259102Z             {
2026-06-21T01:51:38.2259238Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:51:38.2259327Z               "line": 30
2026-06-21T01:51:38.2259412Z             },
2026-06-21T01:51:38.2259498Z             {
2026-06-21T01:51:38.2259630Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:51:38.2259714Z               "line": 76
2026-06-21T01:51:38.2259800Z             },
2026-06-21T01:51:38.2259882Z             {
2026-06-21T01:51:38.2260005Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:51:38.2260096Z               "line": 181
2026-06-21T01:51:38.2260177Z             },
2026-06-21T01:51:38.2260253Z             {
2026-06-21T01:51:38.2260353Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2260449Z               "line": 1266
2026-06-21T01:51:38.2260536Z             }
2026-06-21T01:51:38.2260616Z           ]
2026-06-21T01:51:38.2260706Z         },
2026-06-21T01:51:38.2260788Z         "int": {
2026-06-21T01:51:38.2260888Z           "complete": true,
2026-06-21T01:51:38.2260973Z           "evidence": [
2026-06-21T01:51:38.2261059Z             {
2026-06-21T01:51:38.2261170Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:51:38.2261270Z               "line": 285
2026-06-21T01:51:38.2261359Z             }
2026-06-21T01:51:38.2261442Z           ]
2026-06-21T01:51:38.2261532Z         },
2026-06-21T01:51:38.2261617Z         "unit": {
2026-06-21T01:51:38.2261718Z           "complete": true,
2026-06-21T01:51:38.2261804Z           "evidence": [
2026-06-21T01:51:38.2261893Z             {
2026-06-21T01:51:38.2262023Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:51:38.2262110Z               "line": 229
2026-06-21T01:51:38.2262199Z             },
2026-06-21T01:51:38.2262284Z             {
2026-06-21T01:51:38.2262407Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:51:38.2262610Z               "line": 296
2026-06-21T01:51:38.2262696Z             },
2026-06-21T01:51:38.2262910Z             {
2026-06-21T01:51:38.2263035Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:51:38.2263121Z               "line": 419
2026-06-21T01:51:38.2263201Z             }
2026-06-21T01:51:38.2263287Z           ]
2026-06-21T01:51:38.2263369Z         }
2026-06-21T01:51:38.2263450Z       }
2026-06-21T01:51:38.2263544Z     },
2026-06-21T01:51:38.2263616Z     {
2026-06-21T01:51:38.2263713Z       "id": "REQ-HOST-RUN-2",
2026-06-21T01:51:38.2265374Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-21T01:51:38.2265487Z       "requiredStages": [
2026-06-21T01:51:38.2265573Z         "impl",
2026-06-21T01:51:38.2265659Z         "unit",
2026-06-21T01:51:38.2265745Z         "int"
2026-06-21T01:51:38.2265830Z       ],
2026-06-21T01:51:38.2265922Z       "stages": {
2026-06-21T01:51:38.2266017Z         "doc": {
2026-06-21T01:51:38.2266111Z           "complete": false,
2026-06-21T01:51:38.2266212Z           "evidence": []
2026-06-21T01:51:38.2266293Z         },
2026-06-21T01:51:38.2266388Z         "impl": {
2026-06-21T01:51:38.2266474Z           "complete": true,
2026-06-21T01:51:38.2266571Z           "evidence": [
2026-06-21T01:51:38.2266660Z             {
2026-06-21T01:51:38.2266789Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:51:38.2266885Z               "line": 182
2026-06-21T01:51:38.2266974Z             },
2026-06-21T01:51:38.2267070Z             {
2026-06-21T01:51:38.2267176Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T01:51:38.2267266Z               "line": 113
2026-06-21T01:51:38.2267356Z             }
2026-06-21T01:51:38.2267428Z           ]
2026-06-21T01:51:38.2267520Z         },
2026-06-21T01:51:38.2267600Z         "int": {
2026-06-21T01:51:38.2267699Z           "complete": true,
2026-06-21T01:51:38.2267789Z           "evidence": [
2026-06-21T01:51:38.2267875Z             {
2026-06-21T01:51:38.2267994Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:51:38.2268084Z               "line": 572
2026-06-21T01:51:38.2268161Z             }
2026-06-21T01:51:38.2268243Z           ]
2026-06-21T01:51:38.2268328Z         },
2026-06-21T01:51:38.2268413Z         "unit": {
2026-06-21T01:51:38.2268500Z           "complete": true,
2026-06-21T01:51:38.2268605Z           "evidence": [
2026-06-21T01:51:38.2268681Z             {
2026-06-21T01:51:38.2268796Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T01:51:38.2268881Z               "line": 86
2026-06-21T01:51:38.2269062Z             }
2026-06-21T01:51:38.2269135Z           ]
2026-06-21T01:51:38.2269229Z         }
2026-06-21T01:51:38.2269310Z       }
2026-06-21T01:51:38.2269392Z     },
2026-06-21T01:51:38.2269478Z     {
2026-06-21T01:51:38.2269567Z       "id": "REQ-INFRA-1",
2026-06-21T01:51:38.2269740Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-21T01:51:38.2269830Z       "requiredStages": [],
2026-06-21T01:51:38.2269920Z       "stages": {
2026-06-21T01:51:38.2270010Z         "doc": {
2026-06-21T01:51:38.2270100Z           "complete": false,
2026-06-21T01:51:38.2270195Z           "evidence": []
2026-06-21T01:51:38.2270270Z         },
2026-06-21T01:51:38.2270355Z         "impl": {
2026-06-21T01:51:38.2270442Z           "complete": false,
2026-06-21T01:51:38.2270651Z           "evidence": []
2026-06-21T01:51:38.2270747Z         },
2026-06-21T01:51:38.2270828Z         "int": {
2026-06-21T01:51:38.2271014Z           "complete": false,
2026-06-21T01:51:38.2271110Z           "evidence": []
2026-06-21T01:51:38.2271190Z         },
2026-06-21T01:51:38.2271271Z         "unit": {
2026-06-21T01:51:38.2271367Z           "complete": false,
2026-06-21T01:51:38.2271467Z           "evidence": []
2026-06-21T01:51:38.2271543Z         }
2026-06-21T01:51:38.2271629Z       }
2026-06-21T01:51:38.2271711Z     },
2026-06-21T01:51:38.2271791Z     {
2026-06-21T01:51:38.2271886Z       "id": "REQ-INST-1",
2026-06-21T01:51:38.2272045Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-21T01:51:38.2272138Z       "requiredStages": [],
2026-06-21T01:51:38.2272220Z       "stages": {
2026-06-21T01:51:38.2272307Z         "doc": {
2026-06-21T01:51:38.2272393Z           "complete": false,
2026-06-21T01:51:38.2272487Z           "evidence": []
2026-06-21T01:51:38.2272574Z         },
2026-06-21T01:51:38.2272665Z         "impl": {
2026-06-21T01:51:38.2272764Z           "complete": false,
2026-06-21T01:51:38.2272853Z           "evidence": []
2026-06-21T01:51:38.2272944Z         },
2026-06-21T01:51:38.2273025Z         "int": {
2026-06-21T01:51:38.2273113Z           "complete": false,
2026-06-21T01:51:38.2273194Z           "evidence": []
2026-06-21T01:51:38.2273285Z         },
2026-06-21T01:51:38.2273366Z         "unit": {
2026-06-21T01:51:38.2273456Z           "complete": false,
2026-06-21T01:51:38.2273556Z           "evidence": []
2026-06-21T01:51:38.2273639Z         }
2026-06-21T01:51:38.2273725Z       }
2026-06-21T01:51:38.2273804Z     },
2026-06-21T01:51:38.2273891Z     {
2026-06-21T01:51:38.2273996Z       "id": "REQ-INST-10",
2026-06-21T01:51:38.2274205Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-21T01:51:38.2274338Z       "requiredStages": [
2026-06-21T01:51:38.2274462Z         "impl",
2026-06-21T01:51:38.2274607Z         "unit"
2026-06-21T01:51:38.2274682Z       ],
2026-06-21T01:51:38.2274767Z       "stages": {
2026-06-21T01:51:38.2274860Z         "doc": {
2026-06-21T01:51:38.2274945Z           "complete": false,
2026-06-21T01:51:38.2275063Z           "evidence": []
2026-06-21T01:51:38.2275165Z         },
2026-06-21T01:51:38.2275246Z         "impl": {
2026-06-21T01:51:38.2275339Z           "complete": true,
2026-06-21T01:51:38.2275438Z           "evidence": [
2026-06-21T01:51:38.2275525Z             {
2026-06-21T01:51:38.2275652Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2275737Z               "line": 648
2026-06-21T01:51:38.2275818Z             },
2026-06-21T01:51:38.2275900Z             {
2026-06-21T01:51:38.2276018Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2276109Z               "line": 725
2026-06-21T01:51:38.2276196Z             },
2026-06-21T01:51:38.2276281Z             {
2026-06-21T01:51:38.2276400Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T01:51:38.2276492Z               "line": 13
2026-06-21T01:51:38.2276577Z             },
2026-06-21T01:51:38.2276666Z             {
2026-06-21T01:51:38.2276782Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T01:51:38.2276872Z               "line": 67
2026-06-21T01:51:38.2276953Z             },
2026-06-21T01:51:38.2277043Z             {
2026-06-21T01:51:38.2277155Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:51:38.2277249Z               "line": 18
2026-06-21T01:51:38.2277334Z             },
2026-06-21T01:51:38.2277426Z             {
2026-06-21T01:51:38.2277534Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:51:38.2277611Z               "line": 444
2026-06-21T01:51:38.2277702Z             }
2026-06-21T01:51:38.2277784Z           ]
2026-06-21T01:51:38.2277868Z         },
2026-06-21T01:51:38.2277954Z         "int": {
2026-06-21T01:51:38.2278046Z           "complete": false,
2026-06-21T01:51:38.2278141Z           "evidence": []
2026-06-21T01:51:38.2278329Z         },
2026-06-21T01:51:38.2278426Z         "unit": {
2026-06-21T01:51:38.2278507Z           "complete": true,
2026-06-21T01:51:38.2278673Z           "evidence": [
2026-06-21T01:51:38.2278760Z             {
2026-06-21T01:51:38.2278883Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2279094Z               "line": 932
2026-06-21T01:51:38.2279179Z             },
2026-06-21T01:51:38.2279269Z             {
2026-06-21T01:51:38.2279380Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2279475Z               "line": 1309
2026-06-21T01:51:38.2279565Z             },
2026-06-21T01:51:38.2279651Z             {
2026-06-21T01:51:38.2279775Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2279861Z               "line": 1320
2026-06-21T01:51:38.2279947Z             },
2026-06-21T01:51:38.2280029Z             {
2026-06-21T01:51:38.2280151Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2280242Z               "line": 1336
2026-06-21T01:51:38.2280325Z             },
2026-06-21T01:51:38.2280410Z             {
2026-06-21T01:51:38.2280527Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2280608Z               "line": 1352
2026-06-21T01:51:38.2280694Z             },
2026-06-21T01:51:38.2280778Z             {
2026-06-21T01:51:38.2280906Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2280992Z               "line": 1374
2026-06-21T01:51:38.2281079Z             },
2026-06-21T01:51:38.2281163Z             {
2026-06-21T01:51:38.2281284Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2281369Z               "line": 1679
2026-06-21T01:51:38.2281455Z             },
2026-06-21T01:51:38.2281540Z             {
2026-06-21T01:51:38.2281646Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T01:51:38.2281736Z               "line": 130
2026-06-21T01:51:38.2281821Z             },
2026-06-21T01:51:38.2281914Z             {
2026-06-21T01:51:38.2282013Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T01:51:38.2282103Z               "line": 167
2026-06-21T01:51:38.2282189Z             },
2026-06-21T01:51:38.2282275Z             {
2026-06-21T01:51:38.2282385Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T01:51:38.2282475Z               "line": 175
2026-06-21T01:51:38.2282571Z             },
2026-06-21T01:51:38.2282652Z             {
2026-06-21T01:51:38.2282766Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T01:51:38.2282853Z               "line": 183
2026-06-21T01:51:38.2282943Z             },
2026-06-21T01:51:38.2283028Z             {
2026-06-21T01:51:38.2283139Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:51:38.2283230Z               "line": 896
2026-06-21T01:51:38.2283319Z             }
2026-06-21T01:51:38.2283418Z           ]
2026-06-21T01:51:38.2283509Z         }
2026-06-21T01:51:38.2283594Z       }
2026-06-21T01:51:38.2283678Z     },
2026-06-21T01:51:38.2283759Z     {
2026-06-21T01:51:38.2283845Z       "id": "REQ-INST-11",
2026-06-21T01:51:38.2284059Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-21T01:51:38.2284155Z       "requiredStages": [
2026-06-21T01:51:38.2284241Z         "impl",
2026-06-21T01:51:38.2284327Z         "unit"
2026-06-21T01:51:38.2284412Z       ],
2026-06-21T01:51:38.2284494Z       "stages": {
2026-06-21T01:51:38.2284584Z         "doc": {
2026-06-21T01:51:38.2284674Z           "complete": false,
2026-06-21T01:51:38.2284765Z           "evidence": []
2026-06-21T01:51:38.2284852Z         },
2026-06-21T01:51:38.2284937Z         "impl": {
2026-06-21T01:51:38.2285037Z           "complete": true,
2026-06-21T01:51:38.2285124Z           "evidence": [
2026-06-21T01:51:38.2285214Z             {
2026-06-21T01:51:38.2285332Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2285434Z               "line": 514
2026-06-21T01:51:38.2285662Z             },
2026-06-21T01:51:38.2285740Z             {
2026-06-21T01:51:38.2285876Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.2286057Z               "line": 297
2026-06-21T01:51:38.2286142Z             },
2026-06-21T01:51:38.2286226Z             {
2026-06-21T01:51:38.2286354Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T01:51:38.2286451Z               "line": 59
2026-06-21T01:51:38.2286532Z             },
2026-06-21T01:51:38.2286621Z             {
2026-06-21T01:51:38.2286727Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2286822Z               "line": 5291
2026-06-21T01:51:38.2286912Z             },
2026-06-21T01:51:38.2286993Z             {
2026-06-21T01:51:38.2287104Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2287189Z               "line": 7137
2026-06-21T01:51:38.2287284Z             }
2026-06-21T01:51:38.2287366Z           ]
2026-06-21T01:51:38.2287451Z         },
2026-06-21T01:51:38.2287551Z         "int": {
2026-06-21T01:51:38.2287642Z           "complete": false,
2026-06-21T01:51:38.2287743Z           "evidence": []
2026-06-21T01:51:38.2287819Z         },
2026-06-21T01:51:38.2287904Z         "unit": {
2026-06-21T01:51:38.2287981Z           "complete": true,
2026-06-21T01:51:38.2288081Z           "evidence": [
2026-06-21T01:51:38.2288167Z             {
2026-06-21T01:51:38.2288277Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2288373Z               "line": 1479
2026-06-21T01:51:38.2288457Z             },
2026-06-21T01:51:38.2288548Z             {
2026-06-21T01:51:38.2288664Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2288748Z               "line": 1512
2026-06-21T01:51:38.2288833Z             },
2026-06-21T01:51:38.2288919Z             {
2026-06-21T01:51:38.2289147Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.2289243Z               "line": 527
2026-06-21T01:51:38.2289325Z             },
2026-06-21T01:51:38.2289415Z             {
2026-06-21T01:51:38.2289538Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T01:51:38.2289635Z               "line": 160
2026-06-21T01:51:38.2289716Z             },
2026-06-21T01:51:38.2289805Z             {
2026-06-21T01:51:38.2289921Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T01:51:38.2294182Z               "line": 190
2026-06-21T01:51:38.2294295Z             },
2026-06-21T01:51:38.2294381Z             {
2026-06-21T01:51:38.2294525Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T01:51:38.2294614Z               "line": 225
2026-06-21T01:51:38.2294701Z             },
2026-06-21T01:51:38.2294788Z             {
2026-06-21T01:51:38.2294906Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2294987Z               "line": 7994
2026-06-21T01:51:38.2295078Z             }
2026-06-21T01:51:38.2295164Z           ]
2026-06-21T01:51:38.2295249Z         }
2026-06-21T01:51:38.2295340Z       }
2026-06-21T01:51:38.2295426Z     },
2026-06-21T01:51:38.2295521Z     {
2026-06-21T01:51:38.2295621Z       "id": "REQ-INST-12",
2026-06-21T01:51:38.2295917Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-21T01:51:38.2296018Z       "requiredStages": [
2026-06-21T01:51:38.2296103Z         "impl",
2026-06-21T01:51:38.2296193Z         "unit"
2026-06-21T01:51:38.2296280Z       ],
2026-06-21T01:51:38.2296371Z       "stages": {
2026-06-21T01:51:38.2296455Z         "doc": {
2026-06-21T01:51:38.2296554Z           "complete": false,
2026-06-21T01:51:38.2296645Z           "evidence": []
2026-06-21T01:51:38.2296730Z         },
2026-06-21T01:51:38.2296814Z         "impl": {
2026-06-21T01:51:38.2296895Z           "complete": true,
2026-06-21T01:51:38.2296986Z           "evidence": [
2026-06-21T01:51:38.2297054Z             {
2026-06-21T01:51:38.2297191Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2297277Z               "line": 566
2026-06-21T01:51:38.2297534Z             },
2026-06-21T01:51:38.2297621Z             {
2026-06-21T01:51:38.2297839Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2297936Z               "line": 659
2026-06-21T01:51:38.2298021Z             },
2026-06-21T01:51:38.2298106Z             {
2026-06-21T01:51:38.2298231Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2298312Z               "line": 739
2026-06-21T01:51:38.2298398Z             },
2026-06-21T01:51:38.2298474Z             {
2026-06-21T01:51:38.2298599Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.2298683Z               "line": 96
2026-06-21T01:51:38.2298764Z             },
2026-06-21T01:51:38.2298857Z             {
2026-06-21T01:51:38.2299051Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.2299147Z               "line": 269
2026-06-21T01:51:38.2299233Z             },
2026-06-21T01:51:38.2299322Z             {
2026-06-21T01:51:38.2299436Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T01:51:38.2299522Z               "line": 148
2026-06-21T01:51:38.2299609Z             }
2026-06-21T01:51:38.2299693Z           ]
2026-06-21T01:51:38.2299784Z         },
2026-06-21T01:51:38.2299871Z         "int": {
2026-06-21T01:51:38.2299966Z           "complete": false,
2026-06-21T01:51:38.2300046Z           "evidence": []
2026-06-21T01:51:38.2300142Z         },
2026-06-21T01:51:38.2300228Z         "unit": {
2026-06-21T01:51:38.2300304Z           "complete": true,
2026-06-21T01:51:38.2300394Z           "evidence": [
2026-06-21T01:51:38.2300481Z             {
2026-06-21T01:51:38.2300604Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2300699Z               "line": 1554
2026-06-21T01:51:38.2300791Z             },
2026-06-21T01:51:38.2300876Z             {
2026-06-21T01:51:38.2300995Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2301082Z               "line": 1577
2026-06-21T01:51:38.2301173Z             },
2026-06-21T01:51:38.2301257Z             {
2026-06-21T01:51:38.2301381Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2301474Z               "line": 1614
2026-06-21T01:51:38.2301562Z             },
2026-06-21T01:51:38.2301638Z             {
2026-06-21T01:51:38.2301757Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.2301842Z               "line": 457
2026-06-21T01:51:38.2301931Z             },
2026-06-21T01:51:38.2302012Z             {
2026-06-21T01:51:38.2302117Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T01:51:38.2302217Z               "line": 185
2026-06-21T01:51:38.2302294Z             },
2026-06-21T01:51:38.2302379Z             {
2026-06-21T01:51:38.2302494Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T01:51:38.2302584Z               "line": 206
2026-06-21T01:51:38.2302670Z             },
2026-06-21T01:51:38.2302747Z             {
2026-06-21T01:51:38.2302875Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T01:51:38.2302960Z               "line": 232
2026-06-21T01:51:38.2303053Z             }
2026-06-21T01:51:38.2303138Z           ]
2026-06-21T01:51:38.2303228Z         }
2026-06-21T01:51:38.2303319Z       }
2026-06-21T01:51:38.2303396Z     },
2026-06-21T01:51:38.2303481Z     {
2026-06-21T01:51:38.2303567Z       "id": "REQ-INST-13",
2026-06-21T01:51:38.2303753Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-21T01:51:38.2303867Z       "requiredStages": [
2026-06-21T01:51:38.2303954Z         "impl",
2026-06-21T01:51:38.2304040Z         "unit"
2026-06-21T01:51:38.2304129Z       ],
2026-06-21T01:51:38.2304216Z       "stages": {
2026-06-21T01:51:38.2304302Z         "doc": {
2026-06-21T01:51:38.2304402Z           "complete": false,
2026-06-21T01:51:38.2304486Z           "evidence": []
2026-06-21T01:51:38.2304567Z         },
2026-06-21T01:51:38.2304648Z         "impl": {
2026-06-21T01:51:38.2304855Z           "complete": true,
2026-06-21T01:51:38.2304937Z           "evidence": [
2026-06-21T01:51:38.2305118Z             {
2026-06-21T01:51:38.2305242Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:51:38.2305319Z               "line": 100
2026-06-21T01:51:38.2305405Z             },
2026-06-21T01:51:38.2305489Z             {
2026-06-21T01:51:38.2305610Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T01:51:38.2305700Z               "line": 171
2026-06-21T01:51:38.2305785Z             }
2026-06-21T01:51:38.2305872Z           ]
2026-06-21T01:51:38.2305953Z         },
2026-06-21T01:51:38.2306043Z         "int": {
2026-06-21T01:51:38.2306138Z           "complete": false,
2026-06-21T01:51:38.2306230Z           "evidence": []
2026-06-21T01:51:38.2306315Z         },
2026-06-21T01:51:38.2306405Z         "unit": {
2026-06-21T01:51:38.2306501Z           "complete": true,
2026-06-21T01:51:38.2306592Z           "evidence": [
2026-06-21T01:51:38.2306686Z             {
2026-06-21T01:51:38.2306811Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T01:51:38.2306902Z               "line": 261
2026-06-21T01:51:38.2306997Z             },
2026-06-21T01:51:38.2307076Z             {
2026-06-21T01:51:38.2307205Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T01:51:38.2307295Z               "line": 279
2026-06-21T01:51:38.2307384Z             }
2026-06-21T01:51:38.2307470Z           ]
2026-06-21T01:51:38.2307551Z         }
2026-06-21T01:51:38.2307629Z       }
2026-06-21T01:51:38.2307713Z     },
2026-06-21T01:51:38.2307794Z     {
2026-06-21T01:51:38.2307886Z       "id": "REQ-INST-14",
2026-06-21T01:51:38.2308266Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-21T01:51:38.2308370Z       "requiredStages": [
2026-06-21T01:51:38.2308458Z         "doc",
2026-06-21T01:51:38.2308548Z         "impl",
2026-06-21T01:51:38.2308639Z         "unit"
2026-06-21T01:51:38.2308724Z       ],
2026-06-21T01:51:38.2308806Z       "stages": {
2026-06-21T01:51:38.2308891Z         "doc": {
2026-06-21T01:51:38.2309072Z           "complete": true,
2026-06-21T01:51:38.2309159Z           "evidence": [
2026-06-21T01:51:38.2309262Z             {
2026-06-21T01:51:38.2309363Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.2309445Z               "line": 588
2026-06-21T01:51:38.2309530Z             },
2026-06-21T01:51:38.2309611Z             {
2026-06-21T01:51:38.2309712Z               "path": "docs/STORAGE.md",
2026-06-21T01:51:38.2309803Z               "line": 49
2026-06-21T01:51:38.2309892Z             }
2026-06-21T01:51:38.2309972Z           ]
2026-06-21T01:51:38.2310053Z         },
2026-06-21T01:51:38.2310135Z         "impl": {
2026-06-21T01:51:38.2310235Z           "complete": true,
2026-06-21T01:51:38.2310325Z           "evidence": [
2026-06-21T01:51:38.2310411Z             {
2026-06-21T01:51:38.2310550Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2310635Z               "line": 410
2026-06-21T01:51:38.2310722Z             },
2026-06-21T01:51:38.2310802Z             {
2026-06-21T01:51:38.2310930Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2311027Z               "line": 367
2026-06-21T01:51:38.2311112Z             },
2026-06-21T01:51:38.2311193Z             {
2026-06-21T01:51:38.2311312Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.2311404Z               "line": 293
2026-06-21T01:51:38.2311484Z             },
2026-06-21T01:51:38.2311574Z             {
2026-06-21T01:51:38.2311680Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2311765Z               "line": 1577
2026-06-21T01:51:38.2311851Z             }
2026-06-21T01:51:38.2311937Z           ]
2026-06-21T01:51:38.2312024Z         },
2026-06-21T01:51:38.2312108Z         "int": {
2026-06-21T01:51:38.2312208Z           "complete": false,
2026-06-21T01:51:38.2312294Z           "evidence": []
2026-06-21T01:51:38.2312491Z         },
2026-06-21T01:51:38.2312581Z         "unit": {
2026-06-21T01:51:38.2312759Z           "complete": true,
2026-06-21T01:51:38.2312858Z           "evidence": [
2026-06-21T01:51:38.2312940Z             {
2026-06-21T01:51:38.2313074Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2313163Z               "line": 1163
2026-06-21T01:51:38.2313240Z             },
2026-06-21T01:51:38.2313317Z             {
2026-06-21T01:51:38.2313435Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2313526Z               "line": 944
2026-06-21T01:51:38.2313599Z             },
2026-06-21T01:51:38.2313688Z             {
2026-06-21T01:51:38.2313812Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2313894Z               "line": 1205
2026-06-21T01:51:38.2313979Z             },
2026-06-21T01:51:38.2314061Z             {
2026-06-21T01:51:38.2314169Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.2314271Z               "line": 659
2026-06-21T01:51:38.2314351Z             },
2026-06-21T01:51:38.2314446Z             {
2026-06-21T01:51:38.2314552Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2314647Z               "line": 8070
2026-06-21T01:51:38.2314727Z             }
2026-06-21T01:51:38.2314819Z           ]
2026-06-21T01:51:38.2314906Z         }
2026-06-21T01:51:38.2314990Z       }
2026-06-21T01:51:38.2315075Z     },
2026-06-21T01:51:38.2315156Z     {
2026-06-21T01:51:38.2315242Z       "id": "REQ-INST-15",
2026-06-21T01:51:38.2315941Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-21T01:51:38.2316045Z       "requiredStages": [
2026-06-21T01:51:38.2316126Z         "doc",
2026-06-21T01:51:38.2316203Z         "impl",
2026-06-21T01:51:38.2316289Z         "unit"
2026-06-21T01:51:38.2316369Z       ],
2026-06-21T01:51:38.2316460Z       "stages": {
2026-06-21T01:51:38.2316542Z         "doc": {
2026-06-21T01:51:38.2316637Z           "complete": true,
2026-06-21T01:51:38.2316722Z           "evidence": [
2026-06-21T01:51:38.2316805Z             {
2026-06-21T01:51:38.2316975Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-21T01:51:38.2317061Z               "line": 3
2026-06-21T01:51:38.2317152Z             }
2026-06-21T01:51:38.2317232Z           ]
2026-06-21T01:51:38.2317328Z         },
2026-06-21T01:51:38.2317420Z         "impl": {
2026-06-21T01:51:38.2317510Z           "complete": true,
2026-06-21T01:51:38.2317608Z           "evidence": [
2026-06-21T01:51:38.2317694Z             {
2026-06-21T01:51:38.2317827Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2317916Z               "line": 353
2026-06-21T01:51:38.2318006Z             },
2026-06-21T01:51:38.2318088Z             {
2026-06-21T01:51:38.2318198Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:51:38.2318296Z               "line": 60
2026-06-21T01:51:38.2318373Z             },
2026-06-21T01:51:38.2318465Z             {
2026-06-21T01:51:38.2318588Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.2318688Z               "line": 368
2026-06-21T01:51:38.2318774Z             },
2026-06-21T01:51:38.2318851Z             {
2026-06-21T01:51:38.2319051Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.2319137Z               "line": 417
2026-06-21T01:51:38.2319232Z             },
2026-06-21T01:51:38.2319322Z             {
2026-06-21T01:51:38.2319428Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T01:51:38.2319518Z               "line": 19
2026-06-21T01:51:38.2319604Z             },
2026-06-21T01:51:38.2319686Z             {
2026-06-21T01:51:38.2319799Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T01:51:38.2320001Z               "line": 70
2026-06-21T01:51:38.2320095Z             },
2026-06-21T01:51:38.2320272Z             {
2026-06-21T01:51:38.2320382Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T01:51:38.2320476Z               "line": 96
2026-06-21T01:51:38.2320570Z             },
2026-06-21T01:51:38.2320652Z             {
2026-06-21T01:51:38.2320767Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T01:51:38.2320861Z               "line": 121
2026-06-21T01:51:38.2320943Z             },
2026-06-21T01:51:38.2321029Z             {
2026-06-21T01:51:38.2321133Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T01:51:38.2321224Z               "line": 172
2026-06-21T01:51:38.2321296Z             },
2026-06-21T01:51:38.2321381Z             {
2026-06-21T01:51:38.2321500Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.2321587Z               "line": 178
2026-06-21T01:51:38.2321668Z             },
2026-06-21T01:51:38.2321749Z             {
2026-06-21T01:51:38.2321863Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2321955Z               "line": 1469
2026-06-21T01:51:38.2322044Z             }
2026-06-21T01:51:38.2322134Z           ]
2026-06-21T01:51:38.2322212Z         },
2026-06-21T01:51:38.2322288Z         "int": {
2026-06-21T01:51:38.2322382Z           "complete": false,
2026-06-21T01:51:38.2322463Z           "evidence": []
2026-06-21T01:51:38.2322546Z         },
2026-06-21T01:51:38.2322636Z         "unit": {
2026-06-21T01:51:38.2322720Z           "complete": true,
2026-06-21T01:51:38.2322810Z           "evidence": [
2026-06-21T01:51:38.2322901Z             {
2026-06-21T01:51:38.2323014Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.2323099Z               "line": 577
2026-06-21T01:51:38.2323180Z             },
2026-06-21T01:51:38.2323262Z             {
2026-06-21T01:51:38.2323385Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.2323466Z               "line": 638
2026-06-21T01:51:38.2323553Z             },
2026-06-21T01:51:38.2323639Z             {
2026-06-21T01:51:38.2323743Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T01:51:38.2323834Z               "line": 213
2026-06-21T01:51:38.2323910Z             },
2026-06-21T01:51:38.2323996Z             {
2026-06-21T01:51:38.2324105Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T01:51:38.2324202Z               "line": 249
2026-06-21T01:51:38.2324282Z             },
2026-06-21T01:51:38.2324367Z             {
2026-06-21T01:51:38.2324478Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T01:51:38.2324572Z               "line": 262
2026-06-21T01:51:38.2324658Z             },
2026-06-21T01:51:38.2324739Z             {
2026-06-21T01:51:38.2324850Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T01:51:38.2324934Z               "line": 338
2026-06-21T01:51:38.2325025Z             },
2026-06-21T01:51:38.2325098Z             {
2026-06-21T01:51:38.2325230Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.2325316Z               "line": 690
2026-06-21T01:51:38.2325404Z             },
2026-06-21T01:51:38.2325489Z             {
2026-06-21T01:51:38.2325588Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2325682Z               "line": 8007
2026-06-21T01:51:38.2325773Z             },
2026-06-21T01:51:38.2325853Z             {
2026-06-21T01:51:38.2325957Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2326048Z               "line": 9837
2026-06-21T01:51:38.2326139Z             }
2026-06-21T01:51:38.2326224Z           ]
2026-06-21T01:51:38.2326314Z         }
2026-06-21T01:51:38.2326416Z       }
2026-06-21T01:51:38.2326501Z     },
2026-06-21T01:51:38.2326595Z     {
2026-06-21T01:51:38.2326687Z       "id": "REQ-INST-2",
2026-06-21T01:51:38.2326811Z       "title": "Per-node files, synced Psyche mind",
2026-06-21T01:51:38.2326905Z       "requiredStages": [
2026-06-21T01:51:38.2327001Z         "impl",
2026-06-21T01:51:38.2327201Z         "unit"
2026-06-21T01:51:38.2327277Z       ],
2026-06-21T01:51:38.2327365Z       "stages": {
2026-06-21T01:51:38.2327520Z         "doc": {
2026-06-21T01:51:38.2327621Z           "complete": false,
2026-06-21T01:51:38.2327703Z           "evidence": []
2026-06-21T01:51:38.2327792Z         },
2026-06-21T01:51:38.2327874Z         "impl": {
2026-06-21T01:51:38.2327975Z           "complete": true,
2026-06-21T01:51:38.2328075Z           "evidence": [
2026-06-21T01:51:38.2328155Z             {
2026-06-21T01:51:38.2328292Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.2328373Z               "line": 108
2026-06-21T01:51:38.2328466Z             },
2026-06-21T01:51:38.2328542Z             {
2026-06-21T01:51:38.2328653Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:51:38.2328744Z               "line": 28
2026-06-21T01:51:38.2328829Z             },
2026-06-21T01:51:38.2328915Z             {
2026-06-21T01:51:38.2329106Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:51:38.2329205Z               "line": 74
2026-06-21T01:51:38.2329287Z             },
2026-06-21T01:51:38.2329373Z             {
2026-06-21T01:51:38.2329487Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:51:38.2329573Z               "line": 96
2026-06-21T01:51:38.2329659Z             },
2026-06-21T01:51:38.2329744Z             {
2026-06-21T01:51:38.2329859Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T01:51:38.2329950Z               "line": 86
2026-06-21T01:51:38.2330030Z             },
2026-06-21T01:51:38.2330121Z             {
2026-06-21T01:51:38.2330237Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T01:51:38.2330331Z               "line": 118
2026-06-21T01:51:38.2330412Z             }
2026-06-21T01:51:38.2330498Z           ]
2026-06-21T01:51:38.2330575Z         },
2026-06-21T01:51:38.2330650Z         "int": {
2026-06-21T01:51:38.2330751Z           "complete": false,
2026-06-21T01:51:38.2330828Z           "evidence": []
2026-06-21T01:51:38.2330913Z         },
2026-06-21T01:51:38.2330998Z         "unit": {
2026-06-21T01:51:38.2331097Z           "complete": true,
2026-06-21T01:51:38.2331183Z           "evidence": [
2026-06-21T01:51:38.2331265Z             {
2026-06-21T01:51:38.2331374Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:51:38.2331464Z               "line": 250
2026-06-21T01:51:38.2331551Z             },
2026-06-21T01:51:38.2331627Z             {
2026-06-21T01:51:38.2331736Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T01:51:38.2331823Z               "line": 280
2026-06-21T01:51:38.2331904Z             }
2026-06-21T01:51:38.2331985Z           ]
2026-06-21T01:51:38.2332069Z         }
2026-06-21T01:51:38.2332161Z       }
2026-06-21T01:51:38.2332247Z     },
2026-06-21T01:51:38.2332328Z     {
2026-06-21T01:51:38.2332423Z       "id": "REQ-INST-3",
2026-06-21T01:51:38.2332571Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-21T01:51:38.2332680Z       "requiredStages": [
2026-06-21T01:51:38.2332767Z         "doc",
2026-06-21T01:51:38.2332862Z         "impl",
2026-06-21T01:51:38.2332937Z         "unit"
2026-06-21T01:51:38.2333028Z       ],
2026-06-21T01:51:38.2333120Z       "stages": {
2026-06-21T01:51:38.2333201Z         "doc": {
2026-06-21T01:51:38.2333299Z           "complete": true,
2026-06-21T01:51:38.2333384Z           "evidence": [
2026-06-21T01:51:38.2333476Z             {
2026-06-21T01:51:38.2333583Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-21T01:51:38.2333669Z               "line": 3
2026-06-21T01:51:38.2333759Z             }
2026-06-21T01:51:38.2333846Z           ]
2026-06-21T01:51:38.2333926Z         },
2026-06-21T01:51:38.2334007Z         "impl": {
2026-06-21T01:51:38.2334113Z           "complete": true,
2026-06-21T01:51:38.2334194Z           "evidence": [
2026-06-21T01:51:38.2334283Z             {
2026-06-21T01:51:38.2334409Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T01:51:38.2334617Z               "line": 59
2026-06-21T01:51:38.2334709Z             },
2026-06-21T01:51:38.2334795Z             {
2026-06-21T01:51:38.2335019Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:51:38.2335096Z               "line": 480
2026-06-21T01:51:38.2335186Z             },
2026-06-21T01:51:38.2335276Z             {
2026-06-21T01:51:38.2335411Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.2335509Z               "line": 254
2026-06-21T01:51:38.2335595Z             },
2026-06-21T01:51:38.2335682Z             {
2026-06-21T01:51:38.2335804Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.2335900Z               "line": 384
2026-06-21T01:51:38.2335987Z             },
2026-06-21T01:51:38.2336064Z             {
2026-06-21T01:51:38.2336186Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.2336271Z               "line": 418
2026-06-21T01:51:38.2336362Z             },
2026-06-21T01:51:38.2336446Z             {
2026-06-21T01:51:38.2336569Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T01:51:38.2336670Z               "line": 74
2026-06-21T01:51:38.2336752Z             },
2026-06-21T01:51:38.2336841Z             {
2026-06-21T01:51:38.2336966Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2337066Z               "line": 234
2026-06-21T01:51:38.2337146Z             },
2026-06-21T01:51:38.2337237Z             {
2026-06-21T01:51:38.2337366Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2337456Z               "line": 396
2026-06-21T01:51:38.2337537Z             },
2026-06-21T01:51:38.2337619Z             {
2026-06-21T01:51:38.2337738Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2337819Z               "line": 45
2026-06-21T01:51:38.2337910Z             },
2026-06-21T01:51:38.2337995Z             {
2026-06-21T01:51:38.2338109Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2338191Z               "line": 114
2026-06-21T01:51:38.2338278Z             },
2026-06-21T01:51:38.2338366Z             {
2026-06-21T01:51:38.2338477Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2338564Z               "line": 152
2026-06-21T01:51:38.2338658Z             },
2026-06-21T01:51:38.2338738Z             {
2026-06-21T01:51:38.2338852Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2339031Z               "line": 168
2026-06-21T01:51:38.2339121Z             },
2026-06-21T01:51:38.2339203Z             {
2026-06-21T01:51:38.2339318Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2339408Z               "line": 178
2026-06-21T01:51:38.2339494Z             },
2026-06-21T01:51:38.2339575Z             {
2026-06-21T01:51:38.2339689Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2339775Z               "line": 210
2026-06-21T01:51:38.2339862Z             },
2026-06-21T01:51:38.2339947Z             {
2026-06-21T01:51:38.2340066Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2340153Z               "line": 287
2026-06-21T01:51:38.2340238Z             },
2026-06-21T01:51:38.2340319Z             {
2026-06-21T01:51:38.2340438Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2340534Z               "line": 311
2026-06-21T01:51:38.2340614Z             },
2026-06-21T01:51:38.2340700Z             {
2026-06-21T01:51:38.2340816Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2340910Z               "line": 389
2026-06-21T01:51:38.2340991Z             },
2026-06-21T01:51:38.2341078Z             {
2026-06-21T01:51:38.2341196Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2341281Z               "line": 438
2026-06-21T01:51:38.2341373Z             },
2026-06-21T01:51:38.2341450Z             {
2026-06-21T01:51:38.2341577Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-21T01:51:38.2341782Z               "line": 37
2026-06-21T01:51:38.2341868Z             },
2026-06-21T01:51:38.2342039Z             {
2026-06-21T01:51:38.2342154Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2342239Z               "line": 62
2026-06-21T01:51:38.2342324Z             },
2026-06-21T01:51:38.2342412Z             {
2026-06-21T01:51:38.2342521Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.2342615Z               "line": 279
2026-06-21T01:51:38.2342707Z             },
2026-06-21T01:51:38.2342788Z             {
2026-06-21T01:51:38.2342897Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2342983Z               "line": 1848
2026-06-21T01:51:38.2343079Z             }
2026-06-21T01:51:38.2343150Z           ]
2026-06-21T01:51:38.2343241Z         },
2026-06-21T01:51:38.2343332Z         "int": {
2026-06-21T01:51:38.2343413Z           "complete": false,
2026-06-21T01:51:38.2343516Z           "evidence": []
2026-06-21T01:51:38.2343598Z         },
2026-06-21T01:51:38.2343685Z         "unit": {
2026-06-21T01:51:38.2343775Z           "complete": true,
2026-06-21T01:51:38.2343869Z           "evidence": [
2026-06-21T01:51:38.2343959Z             {
2026-06-21T01:51:38.2344064Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:51:38.2344158Z               "line": 360
2026-06-21T01:51:38.2344243Z             },
2026-06-21T01:51:38.2344329Z             {
2026-06-21T01:51:38.2344449Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.2344538Z               "line": 837
2026-06-21T01:51:38.2344625Z             },
2026-06-21T01:51:38.2344711Z             {
2026-06-21T01:51:38.2344825Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.2344906Z               "line": 894
2026-06-21T01:51:38.2344988Z             },
2026-06-21T01:51:38.2345078Z             {
2026-06-21T01:51:38.2345187Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.2345288Z               "line": 889
2026-06-21T01:51:38.2345369Z             },
2026-06-21T01:51:38.2345455Z             {
2026-06-21T01:51:38.2345559Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.2345651Z               "line": 1014
2026-06-21T01:51:38.2345741Z             },
2026-06-21T01:51:38.2345826Z             {
2026-06-21T01:51:38.2345951Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2346036Z               "line": 1264
2026-06-21T01:51:38.2346122Z             },
2026-06-21T01:51:38.2346194Z             {
2026-06-21T01:51:38.2346328Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2346427Z               "line": 1405
2026-06-21T01:51:38.2346509Z             },
2026-06-21T01:51:38.2346600Z             {
2026-06-21T01:51:38.2346712Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2346807Z               "line": 449
2026-06-21T01:51:38.2346893Z             },
2026-06-21T01:51:38.2346988Z             {
2026-06-21T01:51:38.2347110Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2347201Z               "line": 485
2026-06-21T01:51:38.2347292Z             },
2026-06-21T01:51:38.2347377Z             {
2026-06-21T01:51:38.2347497Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2347583Z               "line": 540
2026-06-21T01:51:38.2347669Z             },
2026-06-21T01:51:38.2347754Z             {
2026-06-21T01:51:38.2347874Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2347960Z               "line": 697
2026-06-21T01:51:38.2348049Z             },
2026-06-21T01:51:38.2348136Z             {
2026-06-21T01:51:38.2348255Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2348345Z               "line": 931
2026-06-21T01:51:38.2348436Z             },
2026-06-21T01:51:38.2348514Z             {
2026-06-21T01:51:38.2348636Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2348795Z               "line": 945
2026-06-21T01:51:38.2349061Z             },
2026-06-21T01:51:38.2349158Z             {
2026-06-21T01:51:38.2349284Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2349383Z               "line": 1290
2026-06-21T01:51:38.2349465Z             },
2026-06-21T01:51:38.2349558Z             {
2026-06-21T01:51:38.2349667Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.2349763Z               "line": 609
2026-06-21T01:51:38.2349850Z             },
2026-06-21T01:51:38.2349930Z             {
2026-06-21T01:51:38.2350040Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2350126Z               "line": 8031
2026-06-21T01:51:38.2350212Z             }
2026-06-21T01:51:38.2350282Z           ]
2026-06-21T01:51:38.2350369Z         }
2026-06-21T01:51:38.2350464Z       }
2026-06-21T01:51:38.2350545Z     },
2026-06-21T01:51:38.2350631Z     {
2026-06-21T01:51:38.2350727Z       "id": "REQ-INST-4",
2026-06-21T01:51:38.2350907Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-21T01:51:38.2351003Z       "requiredStages": [
2026-06-21T01:51:38.2351085Z         "impl",
2026-06-21T01:51:38.2351170Z         "unit"
2026-06-21T01:51:38.2351255Z       ],
2026-06-21T01:51:38.2351337Z       "stages": {
2026-06-21T01:51:38.2351427Z         "doc": {
2026-06-21T01:51:38.2351522Z           "complete": false,
2026-06-21T01:51:38.2351603Z           "evidence": []
2026-06-21T01:51:38.2351696Z         },
2026-06-21T01:51:38.2351794Z         "impl": {
2026-06-21T01:51:38.2351880Z           "complete": true,
2026-06-21T01:51:38.2351972Z           "evidence": [
2026-06-21T01:51:38.2352062Z             {
2026-06-21T01:51:38.2352189Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.2352275Z               "line": 385
2026-06-21T01:51:38.2352361Z             },
2026-06-21T01:51:38.2352452Z             {
2026-06-21T01:51:38.2352570Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2352657Z               "line": 202
2026-06-21T01:51:38.2352747Z             },
2026-06-21T01:51:38.2352833Z             {
2026-06-21T01:51:38.2352938Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2353029Z               "line": 234
2026-06-21T01:51:38.2353119Z             },
2026-06-21T01:51:38.2353199Z             {
2026-06-21T01:51:38.2353320Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2353400Z               "line": 274
2026-06-21T01:51:38.2353491Z             }
2026-06-21T01:51:38.2353572Z           ]
2026-06-21T01:51:38.2353653Z         },
2026-06-21T01:51:38.2353734Z         "int": {
2026-06-21T01:51:38.2353834Z           "complete": false,
2026-06-21T01:51:38.2353926Z           "evidence": []
2026-06-21T01:51:38.2354002Z         },
2026-06-21T01:51:38.2354086Z         "unit": {
2026-06-21T01:51:38.2354168Z           "complete": true,
2026-06-21T01:51:38.2354269Z           "evidence": [
2026-06-21T01:51:38.2354358Z             {
2026-06-21T01:51:38.2354467Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.2354558Z               "line": 889
2026-06-21T01:51:38.2354643Z             },
2026-06-21T01:51:38.2354728Z             {
2026-06-21T01:51:38.2354841Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2354933Z               "line": 561
2026-06-21T01:51:38.2355018Z             },
2026-06-21T01:51:38.2355103Z             {
2026-06-21T01:51:38.2355218Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2355309Z               "line": 668
2026-06-21T01:51:38.2355394Z             },
2026-06-21T01:51:38.2355476Z             {
2026-06-21T01:51:38.2355596Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2355681Z               "line": 750
2026-06-21T01:51:38.2355766Z             }
2026-06-21T01:51:38.2355858Z           ]
2026-06-21T01:51:38.2355939Z         }
2026-06-21T01:51:38.2356139Z       }
2026-06-21T01:51:38.2356225Z     },
2026-06-21T01:51:38.2356311Z     {
2026-06-21T01:51:38.2356502Z       "id": "REQ-INST-5",
2026-06-21T01:51:38.2356682Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-21T01:51:38.2356779Z       "requiredStages": [
2026-06-21T01:51:38.2356869Z         "impl",
2026-06-21T01:51:38.2356958Z         "unit",
2026-06-21T01:51:38.2357050Z         "int"
2026-06-21T01:51:38.2357136Z       ],
2026-06-21T01:51:38.2357226Z       "stages": {
2026-06-21T01:51:38.2357315Z         "doc": {
2026-06-21T01:51:38.2357411Z           "complete": false,
2026-06-21T01:51:38.2357501Z           "evidence": []
2026-06-21T01:51:38.2357595Z         },
2026-06-21T01:51:38.2357675Z         "impl": {
2026-06-21T01:51:38.2357771Z           "complete": true,
2026-06-21T01:51:38.2357862Z           "evidence": [
2026-06-21T01:51:38.2357947Z             {
2026-06-21T01:51:38.2362039Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T01:51:38.2362183Z               "line": 85
2026-06-21T01:51:38.2362280Z             },
2026-06-21T01:51:38.2362363Z             {
2026-06-21T01:51:38.2362493Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:51:38.2362590Z               "line": 68
2026-06-21T01:51:38.2362673Z             },
2026-06-21T01:51:38.2362759Z             {
2026-06-21T01:51:38.2362878Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:51:38.2362974Z               "line": 99
2026-06-21T01:51:38.2363054Z             },
2026-06-21T01:51:38.2363140Z             {
2026-06-21T01:51:38.2363255Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:51:38.2363336Z               "line": 183
2026-06-21T01:51:38.2363426Z             },
2026-06-21T01:51:38.2363508Z             {
2026-06-21T01:51:38.2363617Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:51:38.2363702Z               "line": 314
2026-06-21T01:51:38.2363784Z             }
2026-06-21T01:51:38.2363880Z           ]
2026-06-21T01:51:38.2363960Z         },
2026-06-21T01:51:38.2364046Z         "int": {
2026-06-21T01:51:38.2364137Z           "complete": true,
2026-06-21T01:51:38.2364233Z           "evidence": [
2026-06-21T01:51:38.2364304Z             {
2026-06-21T01:51:38.2364438Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:51:38.2364533Z               "line": 156
2026-06-21T01:51:38.2364618Z             },
2026-06-21T01:51:38.2364704Z             {
2026-06-21T01:51:38.2364825Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T01:51:38.2364909Z               "line": 145
2026-06-21T01:51:38.2364994Z             },
2026-06-21T01:51:38.2365084Z             {
2026-06-21T01:51:38.2365212Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.2365292Z               "line": 707
2026-06-21T01:51:38.2365373Z             },
2026-06-21T01:51:38.2365455Z             {
2026-06-21T01:51:38.2365565Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.2365654Z               "line": 1069
2026-06-21T01:51:38.2365730Z             }
2026-06-21T01:51:38.2365817Z           ]
2026-06-21T01:51:38.2365902Z         },
2026-06-21T01:51:38.2365992Z         "unit": {
2026-06-21T01:51:38.2366085Z           "complete": true,
2026-06-21T01:51:38.2366180Z           "evidence": [
2026-06-21T01:51:38.2366260Z             {
2026-06-21T01:51:38.2366375Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:51:38.2366470Z               "line": 552
2026-06-21T01:51:38.2366546Z             },
2026-06-21T01:51:38.2366627Z             {
2026-06-21T01:51:38.2366738Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:51:38.2366832Z               "line": 595
2026-06-21T01:51:38.2366918Z             },
2026-06-21T01:51:38.2366999Z             {
2026-06-21T01:51:38.2367119Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T01:51:38.2367209Z               "line": 219
2026-06-21T01:51:38.2367448Z             }
2026-06-21T01:51:38.2367533Z           ]
2026-06-21T01:51:38.2367620Z         }
2026-06-21T01:51:38.2367711Z       }
2026-06-21T01:51:38.2367890Z     },
2026-06-21T01:51:38.2367975Z     {
2026-06-21T01:51:38.2368061Z       "id": "REQ-INST-6",
2026-06-21T01:51:38.2368249Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-21T01:51:38.2368340Z       "requiredStages": [
2026-06-21T01:51:38.2368432Z         "impl",
2026-06-21T01:51:38.2368521Z         "unit",
2026-06-21T01:51:38.2368607Z         "int"
2026-06-21T01:51:38.2368689Z       ],
2026-06-21T01:51:38.2368775Z       "stages": {
2026-06-21T01:51:38.2368864Z         "doc": {
2026-06-21T01:51:38.2369047Z           "complete": true,
2026-06-21T01:51:38.2369151Z           "evidence": [
2026-06-21T01:51:38.2369227Z             {
2026-06-21T01:51:38.2369333Z               "path": "docs/DEFERRED.md",
2026-06-21T01:51:38.2369418Z               "line": 13
2026-06-21T01:51:38.2369494Z             }
2026-06-21T01:51:38.2369591Z           ]
2026-06-21T01:51:38.2369662Z         },
2026-06-21T01:51:38.2369751Z         "impl": {
2026-06-21T01:51:38.2369842Z           "complete": true,
2026-06-21T01:51:38.2369920Z           "evidence": [
2026-06-21T01:51:38.2370005Z             {
2026-06-21T01:51:38.2370133Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:51:38.2370216Z               "line": 391
2026-06-21T01:51:38.2370301Z             },
2026-06-21T01:51:38.2370395Z             {
2026-06-21T01:51:38.2370518Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T01:51:38.2370609Z               "line": 27
2026-06-21T01:51:38.2370698Z             },
2026-06-21T01:51:38.2370773Z             {
2026-06-21T01:51:38.2370898Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T01:51:38.2370980Z               "line": 73
2026-06-21T01:51:38.2371073Z             },
2026-06-21T01:51:38.2371160Z             {
2026-06-21T01:51:38.2371279Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T01:51:38.2371369Z               "line": 182
2026-06-21T01:51:38.2371451Z             },
2026-06-21T01:51:38.2371542Z             {
2026-06-21T01:51:38.2371647Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2371741Z               "line": 426
2026-06-21T01:51:38.2371833Z             },
2026-06-21T01:51:38.2371914Z             {
2026-06-21T01:51:38.2372027Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T01:51:38.2372113Z               "line": 31
2026-06-21T01:51:38.2372201Z             },
2026-06-21T01:51:38.2372285Z             {
2026-06-21T01:51:38.2372395Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:51:38.2372482Z               "line": 202
2026-06-21T01:51:38.2372553Z             },
2026-06-21T01:51:38.2372643Z             {
2026-06-21T01:51:38.2372748Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:51:38.2372840Z               "line": 83
2026-06-21T01:51:38.2372919Z             },
2026-06-21T01:51:38.2373005Z             {
2026-06-21T01:51:38.2373116Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2373197Z               "line": 1849
2026-06-21T01:51:38.2373290Z             },
2026-06-21T01:51:38.2373370Z             {
2026-06-21T01:51:38.2373477Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:51:38.2373558Z               "line": 179
2026-06-21T01:51:38.2373643Z             },
2026-06-21T01:51:38.2373724Z             {
2026-06-21T01:51:38.2373820Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:51:38.2373915Z               "line": 215
2026-06-21T01:51:38.2373991Z             }
2026-06-21T01:51:38.2374083Z           ]
2026-06-21T01:51:38.2374158Z         },
2026-06-21T01:51:38.2374244Z         "int": {
2026-06-21T01:51:38.2374334Z           "complete": true,
2026-06-21T01:51:38.2374421Z           "evidence": [
2026-06-21T01:51:38.2374506Z             {
2026-06-21T01:51:38.2374630Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.2374835Z               "line": 721
2026-06-21T01:51:38.2374926Z             },
2026-06-21T01:51:38.2375107Z             {
2026-06-21T01:51:38.2375231Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.2375322Z               "line": 1114
2026-06-21T01:51:38.2375404Z             },
2026-06-21T01:51:38.2375483Z             {
2026-06-21T01:51:38.2375592Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:51:38.2375683Z               "line": 726
2026-06-21T01:51:38.2375758Z             }
2026-06-21T01:51:38.2375852Z           ]
2026-06-21T01:51:38.2375937Z         },
2026-06-21T01:51:38.2376029Z         "unit": {
2026-06-21T01:51:38.2376120Z           "complete": true,
2026-06-21T01:51:38.2376214Z           "evidence": [
2026-06-21T01:51:38.2376295Z             {
2026-06-21T01:51:38.2376425Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:51:38.2376515Z               "line": 661
2026-06-21T01:51:38.2376601Z             },
2026-06-21T01:51:38.2376692Z             {
2026-06-21T01:51:38.2376810Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.2376896Z               "line": 899
2026-06-21T01:51:38.2376983Z             },
2026-06-21T01:51:38.2377069Z             {
2026-06-21T01:51:38.2377192Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T01:51:38.2377284Z               "line": 66
2026-06-21T01:51:38.2377368Z             },
2026-06-21T01:51:38.2377435Z             {
2026-06-21T01:51:38.2377550Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:51:38.2377641Z               "line": 297
2026-06-21T01:51:38.2377726Z             },
2026-06-21T01:51:38.2377812Z             {
2026-06-21T01:51:38.2377923Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:51:38.2378017Z               "line": 203
2026-06-21T01:51:38.2378098Z             }
2026-06-21T01:51:38.2378180Z           ]
2026-06-21T01:51:38.2378266Z         }
2026-06-21T01:51:38.2378346Z       }
2026-06-21T01:51:38.2378440Z     },
2026-06-21T01:51:38.2378521Z     {
2026-06-21T01:51:38.2378621Z       "id": "REQ-INST-7",
2026-06-21T01:51:38.2378753Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-21T01:51:38.2378853Z       "requiredStages": [
2026-06-21T01:51:38.2379025Z         "impl",
2026-06-21T01:51:38.2379110Z         "unit",
2026-06-21T01:51:38.2379206Z         "int"
2026-06-21T01:51:38.2379292Z       ],
2026-06-21T01:51:38.2379382Z       "stages": {
2026-06-21T01:51:38.2379468Z         "doc": {
2026-06-21T01:51:38.2379564Z           "complete": false,
2026-06-21T01:51:38.2379650Z           "evidence": []
2026-06-21T01:51:38.2379725Z         },
2026-06-21T01:51:38.2379811Z         "impl": {
2026-06-21T01:51:38.2379898Z           "complete": true,
2026-06-21T01:51:38.2379988Z           "evidence": [
2026-06-21T01:51:38.2380068Z             {
2026-06-21T01:51:38.2380184Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:51:38.2380279Z               "line": 436
2026-06-21T01:51:38.2380360Z             },
2026-06-21T01:51:38.2380432Z             {
2026-06-21T01:51:38.2380547Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2380640Z               "line": 27
2026-06-21T01:51:38.2380722Z             },
2026-06-21T01:51:38.2380804Z             {
2026-06-21T01:51:38.2380941Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2381031Z               "line": 207
2026-06-21T01:51:38.2381122Z             },
2026-06-21T01:51:38.2381197Z             {
2026-06-21T01:51:38.2381314Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2381400Z               "line": 344
2026-06-21T01:51:38.2381482Z             },
2026-06-21T01:51:38.2381564Z             {
2026-06-21T01:51:38.2381672Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-21T01:51:38.2381763Z               "line": 59
2026-06-21T01:51:38.2381849Z             },
2026-06-21T01:51:38.2381935Z             {
2026-06-21T01:51:38.2382202Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2382291Z               "line": 41
2026-06-21T01:51:38.2382493Z             },
2026-06-21T01:51:38.2382578Z             {
2026-06-21T01:51:38.2382698Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:51:38.2382784Z               "line": 27
2026-06-21T01:51:38.2382860Z             },
2026-06-21T01:51:38.2382935Z             {
2026-06-21T01:51:38.2383061Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:51:38.2383160Z               "line": 119
2026-06-21T01:51:38.2383236Z             },
2026-06-21T01:51:38.2383328Z             {
2026-06-21T01:51:38.2383437Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:51:38.2383522Z               "line": 134
2026-06-21T01:51:38.2383604Z             },
2026-06-21T01:51:38.2383690Z             {
2026-06-21T01:51:38.2383813Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:51:38.2383893Z               "line": 139
2026-06-21T01:51:38.2383984Z             }
2026-06-21T01:51:38.2384065Z           ]
2026-06-21T01:51:38.2384155Z         },
2026-06-21T01:51:38.2384241Z         "int": {
2026-06-21T01:51:38.2384342Z           "complete": true,
2026-06-21T01:51:38.2384433Z           "evidence": [
2026-06-21T01:51:38.2384513Z             {
2026-06-21T01:51:38.2384638Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T01:51:38.2384728Z               "line": 145
2026-06-21T01:51:38.2384813Z             },
2026-06-21T01:51:38.2384890Z             {
2026-06-21T01:51:38.2385005Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.2385095Z               "line": 665
2026-06-21T01:51:38.2385180Z             },
2026-06-21T01:51:38.2385258Z             {
2026-06-21T01:51:38.2385376Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.2385471Z               "line": 964
2026-06-21T01:51:38.2385558Z             }
2026-06-21T01:51:38.2385640Z           ]
2026-06-21T01:51:38.2385733Z         },
2026-06-21T01:51:38.2385819Z         "unit": {
2026-06-21T01:51:38.2385916Z           "complete": true,
2026-06-21T01:51:38.2386006Z           "evidence": [
2026-06-21T01:51:38.2386095Z             {
2026-06-21T01:51:38.2386219Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2386319Z               "line": 1134
2026-06-21T01:51:38.2386412Z             },
2026-06-21T01:51:38.2386493Z             {
2026-06-21T01:51:38.2386623Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2386713Z               "line": 1521
2026-06-21T01:51:38.2386807Z             },
2026-06-21T01:51:38.2386894Z             {
2026-06-21T01:51:38.2387018Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T01:51:38.2387113Z               "line": 84
2026-06-21T01:51:38.2387195Z             },
2026-06-21T01:51:38.2387290Z             {
2026-06-21T01:51:38.2387404Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2387500Z               "line": 812
2026-06-21T01:51:38.2387581Z             },
2026-06-21T01:51:38.2387671Z             {
2026-06-21T01:51:38.2387785Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2387872Z               "line": 823
2026-06-21T01:51:38.2387952Z             },
2026-06-21T01:51:38.2388038Z             {
2026-06-21T01:51:38.2388154Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2388239Z               "line": 838
2026-06-21T01:51:38.2388324Z             },
2026-06-21T01:51:38.2388410Z             {
2026-06-21T01:51:38.2388526Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:51:38.2388615Z               "line": 166
2026-06-21T01:51:38.2388701Z             },
2026-06-21T01:51:38.2388783Z             {
2026-06-21T01:51:38.2388911Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:51:38.2389086Z               "line": 181
2026-06-21T01:51:38.2389289Z             },
2026-06-21T01:51:38.2389374Z             {
2026-06-21T01:51:38.2389500Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:51:38.2389670Z               "line": 214
2026-06-21T01:51:38.2389762Z             }
2026-06-21T01:51:38.2389847Z           ]
2026-06-21T01:51:38.2389928Z         }
2026-06-21T01:51:38.2390008Z       }
2026-06-21T01:51:38.2390091Z     },
2026-06-21T01:51:38.2390172Z     {
2026-06-21T01:51:38.2390266Z       "id": "REQ-INST-8",
2026-06-21T01:51:38.2390425Z       "title": "Remote-control mode distinct from local operation",
2026-06-21T01:51:38.2390524Z       "requiredStages": [
2026-06-21T01:51:38.2390610Z         "impl",
2026-06-21T01:51:38.2390696Z         "unit",
2026-06-21T01:51:38.2390777Z         "int"
2026-06-21T01:51:38.2390867Z       ],
2026-06-21T01:51:38.2390943Z       "stages": {
2026-06-21T01:51:38.2391036Z         "doc": {
2026-06-21T01:51:38.2391135Z           "complete": false,
2026-06-21T01:51:38.2391220Z           "evidence": []
2026-06-21T01:51:38.2391307Z         },
2026-06-21T01:51:38.2391388Z         "impl": {
2026-06-21T01:51:38.2391487Z           "complete": true,
2026-06-21T01:51:38.2391562Z           "evidence": [
2026-06-21T01:51:38.2391658Z             {
2026-06-21T01:51:38.2391767Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T01:51:38.2391851Z               "line": 104
2026-06-21T01:51:38.2391941Z             },
2026-06-21T01:51:38.2392027Z             {
2026-06-21T01:51:38.2392133Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T01:51:38.2392222Z               "line": 330
2026-06-21T01:51:38.2392309Z             },
2026-06-21T01:51:38.2392400Z             {
2026-06-21T01:51:38.2392514Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T01:51:38.2392604Z               "line": 370
2026-06-21T01:51:38.2392686Z             },
2026-06-21T01:51:38.2392772Z             {
2026-06-21T01:51:38.2392885Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T01:51:38.2392977Z               "line": 62
2026-06-21T01:51:38.2393067Z             }
2026-06-21T01:51:38.2393157Z           ]
2026-06-21T01:51:38.2393243Z         },
2026-06-21T01:51:38.2393330Z         "int": {
2026-06-21T01:51:38.2393430Z           "complete": true,
2026-06-21T01:51:38.2393515Z           "evidence": [
2026-06-21T01:51:38.2393607Z             {
2026-06-21T01:51:38.2393734Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:51:38.2393820Z               "line": 415
2026-06-21T01:51:38.2393908Z             },
2026-06-21T01:51:38.2393988Z             {
2026-06-21T01:51:38.2394116Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.2394213Z               "line": 1028
2026-06-21T01:51:38.2394294Z             }
2026-06-21T01:51:38.2394382Z           ]
2026-06-21T01:51:38.2394463Z         },
2026-06-21T01:51:38.2394544Z         "unit": {
2026-06-21T01:51:38.2394626Z           "complete": true,
2026-06-21T01:51:38.2394716Z           "evidence": [
2026-06-21T01:51:38.2394801Z             {
2026-06-21T01:51:38.2394917Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:51:38.2395008Z               "line": 366
2026-06-21T01:51:38.2395097Z             },
2026-06-21T01:51:38.2395184Z             {
2026-06-21T01:51:38.2395302Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:51:38.2395383Z               "line": 633
2026-06-21T01:51:38.2395469Z             },
2026-06-21T01:51:38.2395551Z             {
2026-06-21T01:51:38.2395670Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T01:51:38.2395755Z               "line": 116
2026-06-21T01:51:38.2395837Z             },
2026-06-21T01:51:38.2395918Z             {
2026-06-21T01:51:38.2396036Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T01:51:38.2396128Z               "line": 160
2026-06-21T01:51:38.2396214Z             }
2026-06-21T01:51:38.2396298Z           ]
2026-06-21T01:51:38.2396384Z         }
2026-06-21T01:51:38.2396552Z       }
2026-06-21T01:51:38.2396637Z     },
2026-06-21T01:51:38.2396722Z     {
2026-06-21T01:51:38.2396817Z       "id": "REQ-INST-9",
2026-06-21T01:51:38.2397067Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-21T01:51:38.2397159Z       "requiredStages": [
2026-06-21T01:51:38.2397236Z         "impl",
2026-06-21T01:51:38.2397325Z         "unit"
2026-06-21T01:51:38.2397406Z       ],
2026-06-21T01:51:38.2397493Z       "stages": {
2026-06-21T01:51:38.2397583Z         "doc": {
2026-06-21T01:51:38.2397668Z           "complete": false,
2026-06-21T01:51:38.2397755Z           "evidence": []
2026-06-21T01:51:38.2397836Z         },
2026-06-21T01:51:38.2397930Z         "impl": {
2026-06-21T01:51:38.2398011Z           "complete": true,
2026-06-21T01:51:38.2398104Z           "evidence": [
2026-06-21T01:51:38.2398193Z             {
2026-06-21T01:51:38.2398298Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2398384Z               "line": 449
2026-06-21T01:51:38.2398475Z             }
2026-06-21T01:51:38.2398556Z           ]
2026-06-21T01:51:38.2398637Z         },
2026-06-21T01:51:38.2398728Z         "int": {
2026-06-21T01:51:38.2398832Z           "complete": false,
2026-06-21T01:51:38.2398922Z           "evidence": []
2026-06-21T01:51:38.2399077Z         },
2026-06-21T01:51:38.2399156Z         "unit": {
2026-06-21T01:51:38.2399237Z           "complete": true,
2026-06-21T01:51:38.2399325Z           "evidence": [
2026-06-21T01:51:38.2399410Z             {
2026-06-21T01:51:38.2399532Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2399617Z               "line": 1397
2026-06-21T01:51:38.2399709Z             },
2026-06-21T01:51:38.2399792Z             {
2026-06-21T01:51:38.2399915Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2399997Z               "line": 1406
2026-06-21T01:51:38.2400088Z             },
2026-06-21T01:51:38.2400178Z             {
2026-06-21T01:51:38.2400288Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2400384Z               "line": 1422
2026-06-21T01:51:38.2400464Z             },
2026-06-21T01:51:38.2400559Z             {
2026-06-21T01:51:38.2400675Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2400760Z               "line": 1434
2026-06-21T01:51:38.2400850Z             },
2026-06-21T01:51:38.2400927Z             {
2026-06-21T01:51:38.2401046Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2401127Z               "line": 1454
2026-06-21T01:51:38.2401222Z             }
2026-06-21T01:51:38.2401300Z           ]
2026-06-21T01:51:38.2401389Z         }
2026-06-21T01:51:38.2401475Z       }
2026-06-21T01:51:38.2401552Z     },
2026-06-21T01:51:38.2401638Z     {
2026-06-21T01:51:38.2401723Z       "id": "REQ-INSTALL-1",
2026-06-21T01:51:38.2401920Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-21T01:51:38.2402000Z       "requiredStages": [
2026-06-21T01:51:38.2402094Z         "doc",
2026-06-21T01:51:38.2402184Z         "impl",
2026-06-21T01:51:38.2402266Z         "int"
2026-06-21T01:51:38.2402359Z       ],
2026-06-21T01:51:38.2402439Z       "stages": {
2026-06-21T01:51:38.2402525Z         "doc": {
2026-06-21T01:51:38.2402617Z           "complete": true,
2026-06-21T01:51:38.2402716Z           "evidence": [
2026-06-21T01:51:38.2402801Z             {
2026-06-21T01:51:38.2402898Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.2402984Z               "line": 754
2026-06-21T01:51:38.2403059Z             }
2026-06-21T01:51:38.2403145Z           ]
2026-06-21T01:51:38.2403232Z         },
2026-06-21T01:51:38.2403317Z         "impl": {
2026-06-21T01:51:38.2403403Z           "complete": true,
2026-06-21T01:51:38.2403489Z           "evidence": [
2026-06-21T01:51:38.2403580Z             {
2026-06-21T01:51:38.2403680Z               "path": "installer/install.ps1",
2026-06-21T01:51:38.2403775Z               "line": 57
2026-06-21T01:51:38.2403966Z             },
2026-06-21T01:51:38.2404056Z             {
2026-06-21T01:51:38.2404162Z               "path": "installer/install.sh",
2026-06-21T01:51:38.2404347Z               "line": 52
2026-06-21T01:51:38.2404433Z             }
2026-06-21T01:51:38.2404510Z           ]
2026-06-21T01:51:38.2404599Z         },
2026-06-21T01:51:38.2404676Z         "int": {
2026-06-21T01:51:38.2404763Z           "complete": true,
2026-06-21T01:51:38.2404854Z           "evidence": [
2026-06-21T01:51:38.2404928Z             {
2026-06-21T01:51:38.2405056Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T01:51:38.2405142Z               "line": 21
2026-06-21T01:51:38.2405225Z             }
2026-06-21T01:51:38.2405309Z           ]
2026-06-21T01:51:38.2405394Z         },
2026-06-21T01:51:38.2405472Z         "unit": {
2026-06-21T01:51:38.2405568Z           "complete": false,
2026-06-21T01:51:38.2405657Z           "evidence": []
2026-06-21T01:51:38.2405739Z         }
2026-06-21T01:51:38.2405830Z       }
2026-06-21T01:51:38.2405906Z     },
2026-06-21T01:51:38.2406000Z     {
2026-06-21T01:51:38.2406097Z       "id": "REQ-INSTALL-10",
2026-06-21T01:51:38.2407566Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-21T01:51:38.2407680Z       "requiredStages": [
2026-06-21T01:51:38.2407762Z         "impl",
2026-06-21T01:51:38.2407857Z         "unit"
2026-06-21T01:51:38.2407947Z       ],
2026-06-21T01:51:38.2408034Z       "stages": {
2026-06-21T01:51:38.2408120Z         "doc": {
2026-06-21T01:51:38.2408209Z           "complete": false,
2026-06-21T01:51:38.2408310Z           "evidence": []
2026-06-21T01:51:38.2408391Z         },
2026-06-21T01:51:38.2408491Z         "impl": {
2026-06-21T01:51:38.2408586Z           "complete": true,
2026-06-21T01:51:38.2408668Z           "evidence": [
2026-06-21T01:51:38.2408763Z             {
2026-06-21T01:51:38.2408867Z               "path": "installer/install.ps1",
2026-06-21T01:51:38.2409035Z               "line": 191
2026-06-21T01:51:38.2409121Z             }
2026-06-21T01:51:38.2409211Z           ]
2026-06-21T01:51:38.2409298Z         },
2026-06-21T01:51:38.2409378Z         "int": {
2026-06-21T01:51:38.2409478Z           "complete": false,
2026-06-21T01:51:38.2409570Z           "evidence": []
2026-06-21T01:51:38.2409656Z         },
2026-06-21T01:51:38.2409735Z         "unit": {
2026-06-21T01:51:38.2409826Z           "complete": true,
2026-06-21T01:51:38.2409918Z           "evidence": [
2026-06-21T01:51:38.2409998Z             {
2026-06-21T01:51:38.2410121Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T01:51:38.2410212Z               "line": 211
2026-06-21T01:51:38.2410293Z             }
2026-06-21T01:51:38.2410376Z           ]
2026-06-21T01:51:38.2410462Z         }
2026-06-21T01:51:38.2410552Z       }
2026-06-21T01:51:38.2410639Z     },
2026-06-21T01:51:38.2410724Z     {
2026-06-21T01:51:38.2410814Z       "id": "REQ-INSTALL-11",
2026-06-21T01:51:38.2412607Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-21T01:51:38.2412711Z       "requiredStages": [
2026-06-21T01:51:38.2412792Z         "doc",
2026-06-21T01:51:38.2412887Z         "impl",
2026-06-21T01:51:38.2413109Z         "unit"
2026-06-21T01:51:38.2413196Z       ],
2026-06-21T01:51:38.2413281Z       "stages": {
2026-06-21T01:51:38.2413449Z         "doc": {
2026-06-21T01:51:38.2413539Z           "complete": true,
2026-06-21T01:51:38.2413619Z           "evidence": [
2026-06-21T01:51:38.2413700Z             {
2026-06-21T01:51:38.2413797Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.2413882Z               "line": 138
2026-06-21T01:51:38.2413968Z             },
2026-06-21T01:51:38.2414049Z             {
2026-06-21T01:51:38.2414159Z               "path": "docs/MANIFEST.md",
2026-06-21T01:51:38.2414249Z               "line": 82
2026-06-21T01:51:38.2414335Z             }
2026-06-21T01:51:38.2414413Z           ]
2026-06-21T01:51:38.2414502Z         },
2026-06-21T01:51:38.2414592Z         "impl": {
2026-06-21T01:51:38.2414684Z           "complete": true,
2026-06-21T01:51:38.2414779Z           "evidence": [
2026-06-21T01:51:38.2414864Z             {
2026-06-21T01:51:38.2414989Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:51:38.2415080Z               "line": 223
2026-06-21T01:51:38.2415169Z             },
2026-06-21T01:51:38.2415246Z             {
2026-06-21T01:51:38.2415371Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.2415460Z               "line": 99
2026-06-21T01:51:38.2415545Z             },
2026-06-21T01:51:38.2415626Z             {
2026-06-21T01:51:38.2415742Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.2415827Z               "line": 117
2026-06-21T01:51:38.2415916Z             },
2026-06-21T01:51:38.2416003Z             {
2026-06-21T01:51:38.2416128Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:51:38.2416217Z               "line": 332
2026-06-21T01:51:38.2416309Z             },
2026-06-21T01:51:38.2416394Z             {
2026-06-21T01:51:38.2416513Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T01:51:38.2416613Z               "line": 88
2026-06-21T01:51:38.2416699Z             },
2026-06-21T01:51:38.2416790Z             {
2026-06-21T01:51:38.2416899Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T01:51:38.2417000Z               "line": 104
2026-06-21T01:51:38.2417071Z             },
2026-06-21T01:51:38.2417157Z             {
2026-06-21T01:51:38.2417282Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2417367Z               "line": 297
2026-06-21T01:51:38.2417447Z             },
2026-06-21T01:51:38.2417529Z             {
2026-06-21T01:51:38.2417649Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2417738Z               "line": 332
2026-06-21T01:51:38.2417823Z             },
2026-06-21T01:51:38.2417904Z             {
2026-06-21T01:51:38.2418013Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2418102Z               "line": 523
2026-06-21T01:51:38.2418187Z             },
2026-06-21T01:51:38.2418279Z             {
2026-06-21T01:51:38.2418398Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2418493Z               "line": 546
2026-06-21T01:51:38.2418574Z             },
2026-06-21T01:51:38.2418660Z             {
2026-06-21T01:51:38.2418784Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2418861Z               "line": 561
2026-06-21T01:51:38.2419023Z             },
2026-06-21T01:51:38.2419117Z             {
2026-06-21T01:51:38.2419224Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:51:38.2419318Z               "line": 492
2026-06-21T01:51:38.2419408Z             }
2026-06-21T01:51:38.2419495Z           ]
2026-06-21T01:51:38.2419581Z         },
2026-06-21T01:51:38.2419681Z         "int": {
2026-06-21T01:51:38.2419776Z           "complete": false,
2026-06-21T01:51:38.2419872Z           "evidence": []
2026-06-21T01:51:38.2419971Z         },
2026-06-21T01:51:38.2420057Z         "unit": {
2026-06-21T01:51:38.2420158Z           "complete": true,
2026-06-21T01:51:38.2420367Z           "evidence": [
2026-06-21T01:51:38.2420473Z             {
2026-06-21T01:51:38.2420582Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2420772Z               "line": 799
2026-06-21T01:51:38.2420857Z             },
2026-06-21T01:51:38.2420927Z             {
2026-06-21T01:51:38.2421050Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2421127Z               "line": 811
2026-06-21T01:51:38.2421213Z             },
2026-06-21T01:51:38.2421303Z             {
2026-06-21T01:51:38.2421408Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.2421495Z               "line": 820
2026-06-21T01:51:38.2421580Z             }
2026-06-21T01:51:38.2421660Z           ]
2026-06-21T01:51:38.2421733Z         }
2026-06-21T01:51:38.2421819Z       }
2026-06-21T01:51:38.2421904Z     },
2026-06-21T01:51:38.2421985Z     {
2026-06-21T01:51:38.2422071Z       "id": "REQ-INSTALL-12",
2026-06-21T01:51:38.2424757Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-21T01:51:38.2424866Z       "requiredStages": [
2026-06-21T01:51:38.2424953Z         "doc",
2026-06-21T01:51:38.2425038Z         "impl",
2026-06-21T01:51:38.2425134Z         "unit",
2026-06-21T01:51:38.2425209Z         "int"
2026-06-21T01:51:38.2425297Z       ],
2026-06-21T01:51:38.2425391Z       "stages": {
2026-06-21T01:51:38.2425472Z         "doc": {
2026-06-21T01:51:38.2425568Z           "complete": true,
2026-06-21T01:51:38.2425659Z           "evidence": [
2026-06-21T01:51:38.2425748Z             {
2026-06-21T01:51:38.2425839Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.2425931Z               "line": 185
2026-06-21T01:51:38.2426020Z             }
2026-06-21T01:51:38.2426101Z           ]
2026-06-21T01:51:38.2426181Z         },
2026-06-21T01:51:38.2426263Z         "impl": {
2026-06-21T01:51:38.2426359Z           "complete": true,
2026-06-21T01:51:38.2426448Z           "evidence": [
2026-06-21T01:51:38.2426539Z             {
2026-06-21T01:51:38.2426664Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:51:38.2426754Z               "line": 27
2026-06-21T01:51:38.2426844Z             },
2026-06-21T01:51:38.2426931Z             {
2026-06-21T01:51:38.2427054Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:51:38.2427150Z               "line": 223
2026-06-21T01:51:38.2427241Z             },
2026-06-21T01:51:38.2427335Z             {
2026-06-21T01:51:38.2427440Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2427532Z               "line": 5677
2026-06-21T01:51:38.2427617Z             }
2026-06-21T01:51:38.2427698Z           ]
2026-06-21T01:51:38.2427774Z         },
2026-06-21T01:51:38.2427866Z         "int": {
2026-06-21T01:51:38.2427960Z           "complete": true,
2026-06-21T01:51:38.2428036Z           "evidence": [
2026-06-21T01:51:38.2428123Z             {
2026-06-21T01:51:38.2428247Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T01:51:38.2428345Z               "line": 19
2026-06-21T01:51:38.2428435Z             }
2026-06-21T01:51:38.2428512Z           ]
2026-06-21T01:51:38.2428601Z         },
2026-06-21T01:51:38.2428686Z         "unit": {
2026-06-21T01:51:38.2428878Z           "complete": true,
2026-06-21T01:51:38.2429039Z           "evidence": [
2026-06-21T01:51:38.2429235Z             {
2026-06-21T01:51:38.2429363Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:51:38.2429450Z               "line": 395
2026-06-21T01:51:38.2429535Z             },
2026-06-21T01:51:38.2429621Z             {
2026-06-21T01:51:38.2429736Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:51:38.2429826Z               "line": 421
2026-06-21T01:51:38.2429912Z             },
2026-06-21T01:51:38.2434087Z             {
2026-06-21T01:51:38.2434355Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:51:38.2434458Z               "line": 440
2026-06-21T01:51:38.2434535Z             },
2026-06-21T01:51:38.2434626Z             {
2026-06-21T01:51:38.2434759Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:51:38.2434855Z               "line": 475
2026-06-21T01:51:38.2434950Z             },
2026-06-21T01:51:38.2435050Z             {
2026-06-21T01:51:38.2435170Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2435260Z               "line": 8665
2026-06-21T01:51:38.2435341Z             }
2026-06-21T01:51:38.2435427Z           ]
2026-06-21T01:51:38.2435508Z         }
2026-06-21T01:51:38.2435603Z       }
2026-06-21T01:51:38.2435694Z     },
2026-06-21T01:51:38.2435789Z     {
2026-06-21T01:51:38.2435890Z       "id": "REQ-INSTALL-2",
2026-06-21T01:51:38.2436037Z       "title": "Marketplace-repackaging-friendly install",
2026-06-21T01:51:38.2436129Z       "requiredStages": [
2026-06-21T01:51:38.2436219Z         "doc"
2026-06-21T01:51:38.2436308Z       ],
2026-06-21T01:51:38.2436409Z       "stages": {
2026-06-21T01:51:38.2436506Z         "doc": {
2026-06-21T01:51:38.2436599Z           "complete": true,
2026-06-21T01:51:38.2436698Z           "evidence": [
2026-06-21T01:51:38.2436784Z             {
2026-06-21T01:51:38.2436886Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.2436980Z               "line": 755
2026-06-21T01:51:38.2437066Z             }
2026-06-21T01:51:38.2437152Z           ]
2026-06-21T01:51:38.2437238Z         },
2026-06-21T01:51:38.2437323Z         "impl": {
2026-06-21T01:51:38.2437414Z           "complete": false,
2026-06-21T01:51:38.2437505Z           "evidence": []
2026-06-21T01:51:38.2437586Z         },
2026-06-21T01:51:38.2437666Z         "int": {
2026-06-21T01:51:38.2437758Z           "complete": false,
2026-06-21T01:51:38.2437848Z           "evidence": []
2026-06-21T01:51:38.2437924Z         },
2026-06-21T01:51:38.2438014Z         "unit": {
2026-06-21T01:51:38.2438116Z           "complete": false,
2026-06-21T01:51:38.2438191Z           "evidence": []
2026-06-21T01:51:38.2438287Z         }
2026-06-21T01:51:38.2438373Z       }
2026-06-21T01:51:38.2438454Z     },
2026-06-21T01:51:38.2438544Z     {
2026-06-21T01:51:38.2438630Z       "id": "REQ-INSTALL-3",
2026-06-21T01:51:38.2438788Z       "title": "Idempotent + interactive-optional first run",
2026-06-21T01:51:38.2438873Z       "requiredStages": [
2026-06-21T01:51:38.2439067Z         "impl",
2026-06-21T01:51:38.2439161Z         "int"
2026-06-21T01:51:38.2439246Z       ],
2026-06-21T01:51:38.2439342Z       "stages": {
2026-06-21T01:51:38.2439429Z         "doc": {
2026-06-21T01:51:38.2439528Z           "complete": false,
2026-06-21T01:51:38.2439618Z           "evidence": []
2026-06-21T01:51:38.2439695Z         },
2026-06-21T01:51:38.2439785Z         "impl": {
2026-06-21T01:51:38.2439876Z           "complete": true,
2026-06-21T01:51:38.2439957Z           "evidence": [
2026-06-21T01:51:38.2440048Z             {
2026-06-21T01:51:38.2440162Z               "path": "installer/install.ps1",
2026-06-21T01:51:38.2440247Z               "line": 100
2026-06-21T01:51:38.2440339Z             },
2026-06-21T01:51:38.2440434Z             {
2026-06-21T01:51:38.2440538Z               "path": "installer/install.ps1",
2026-06-21T01:51:38.2440635Z               "line": 111
2026-06-21T01:51:38.2440715Z             },
2026-06-21T01:51:38.2440950Z             {
2026-06-21T01:51:38.2441058Z               "path": "installer/install.sh",
2026-06-21T01:51:38.2441149Z               "line": 79
2026-06-21T01:51:38.2441321Z             }
2026-06-21T01:51:38.2441406Z           ]
2026-06-21T01:51:38.2441497Z         },
2026-06-21T01:51:38.2441574Z         "int": {
2026-06-21T01:51:38.2441674Z           "complete": true,
2026-06-21T01:51:38.2441763Z           "evidence": [
2026-06-21T01:51:38.2441853Z             {
2026-06-21T01:51:38.2441977Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T01:51:38.2442071Z               "line": 167
2026-06-21T01:51:38.2442156Z             }
2026-06-21T01:51:38.2442243Z           ]
2026-06-21T01:51:38.2442338Z         },
2026-06-21T01:51:38.2442419Z         "unit": {
2026-06-21T01:51:38.2442518Z           "complete": false,
2026-06-21T01:51:38.2442615Z           "evidence": []
2026-06-21T01:51:38.2442696Z         }
2026-06-21T01:51:38.2442776Z       }
2026-06-21T01:51:38.2442858Z     },
2026-06-21T01:51:38.2442953Z     {
2026-06-21T01:51:38.2443030Z       "id": "REQ-INSTALL-4",
2026-06-21T01:51:38.2443653Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-21T01:51:38.2443749Z       "requiredStages": [
2026-06-21T01:51:38.2443831Z         "impl",
2026-06-21T01:51:38.2443922Z         "unit"
2026-06-21T01:51:38.2444011Z       ],
2026-06-21T01:51:38.2444098Z       "stages": {
2026-06-21T01:51:38.2444189Z         "doc": {
2026-06-21T01:51:38.2444283Z           "complete": false,
2026-06-21T01:51:38.2444373Z           "evidence": []
2026-06-21T01:51:38.2444459Z         },
2026-06-21T01:51:38.2444544Z         "impl": {
2026-06-21T01:51:38.2444628Z           "complete": true,
2026-06-21T01:51:38.2444718Z           "evidence": [
2026-06-21T01:51:38.2444804Z             {
2026-06-21T01:51:38.2444938Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:51:38.2445018Z               "line": 165
2026-06-21T01:51:38.2445105Z             },
2026-06-21T01:51:38.2445196Z             {
2026-06-21T01:51:38.2445323Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2445415Z               "line": 29
2026-06-21T01:51:38.2445496Z             },
2026-06-21T01:51:38.2445573Z             {
2026-06-21T01:51:38.2445691Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2445773Z               "line": 288
2026-06-21T01:51:38.2445858Z             },
2026-06-21T01:51:38.2445943Z             {
2026-06-21T01:51:38.2446064Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2446163Z               "line": 356
2026-06-21T01:51:38.2446249Z             },
2026-06-21T01:51:38.2446339Z             {
2026-06-21T01:51:38.2446455Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2446549Z               "line": 386
2026-06-21T01:51:38.2446631Z             },
2026-06-21T01:51:38.2446722Z             {
2026-06-21T01:51:38.2446844Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2446940Z               "line": 434
2026-06-21T01:51:38.2447032Z             },
2026-06-21T01:51:38.2447113Z             {
2026-06-21T01:51:38.2447226Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2447316Z               "line": 5396
2026-06-21T01:51:38.2447407Z             }
2026-06-21T01:51:38.2447493Z           ]
2026-06-21T01:51:38.2447578Z         },
2026-06-21T01:51:38.2447669Z         "int": {
2026-06-21T01:51:38.2447760Z           "complete": false,
2026-06-21T01:51:38.2447854Z           "evidence": []
2026-06-21T01:51:38.2447940Z         },
2026-06-21T01:51:38.2448032Z         "unit": {
2026-06-21T01:51:38.2448137Z           "complete": true,
2026-06-21T01:51:38.2448222Z           "evidence": [
2026-06-21T01:51:38.2448313Z             {
2026-06-21T01:51:38.2448441Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:51:38.2448657Z               "line": 375
2026-06-21T01:51:38.2448813Z             },
2026-06-21T01:51:38.2448904Z             {
2026-06-21T01:51:38.2449104Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2449190Z               "line": 808
2026-06-21T01:51:38.2449277Z             },
2026-06-21T01:51:38.2449362Z             {
2026-06-21T01:51:38.2449480Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2449570Z               "line": 849
2026-06-21T01:51:38.2449656Z             },
2026-06-21T01:51:38.2449740Z             {
2026-06-21T01:51:38.2449858Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2449954Z               "line": 869
2026-06-21T01:51:38.2450036Z             },
2026-06-21T01:51:38.2450126Z             {
2026-06-21T01:51:38.2450231Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2450322Z               "line": 8403
2026-06-21T01:51:38.2450407Z             }
2026-06-21T01:51:38.2450492Z           ]
2026-06-21T01:51:38.2450575Z         }
2026-06-21T01:51:38.2450656Z       }
2026-06-21T01:51:38.2450741Z     },
2026-06-21T01:51:38.2450822Z     {
2026-06-21T01:51:38.2450909Z       "id": "REQ-INSTALL-5",
2026-06-21T01:51:38.2451385Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-21T01:51:38.2451481Z       "requiredStages": [
2026-06-21T01:51:38.2451576Z         "impl",
2026-06-21T01:51:38.2451666Z         "int"
2026-06-21T01:51:38.2451747Z       ],
2026-06-21T01:51:38.2451844Z       "stages": {
2026-06-21T01:51:38.2451929Z         "doc": {
2026-06-21T01:51:38.2452024Z           "complete": false,
2026-06-21T01:51:38.2452111Z           "evidence": []
2026-06-21T01:51:38.2452201Z         },
2026-06-21T01:51:38.2452290Z         "impl": {
2026-06-21T01:51:38.2452389Z           "complete": true,
2026-06-21T01:51:38.2452486Z           "evidence": [
2026-06-21T01:51:38.2452570Z             {
2026-06-21T01:51:38.2452683Z               "path": "installer/install.ps1",
2026-06-21T01:51:38.2452759Z               "line": 5
2026-06-21T01:51:38.2452846Z             },
2026-06-21T01:51:38.2452927Z             {
2026-06-21T01:51:38.2453035Z               "path": "installer/install.sh",
2026-06-21T01:51:38.2453123Z               "line": 6
2026-06-21T01:51:38.2453199Z             }
2026-06-21T01:51:38.2453279Z           ]
2026-06-21T01:51:38.2453355Z         },
2026-06-21T01:51:38.2453442Z         "int": {
2026-06-21T01:51:38.2453533Z           "complete": true,
2026-06-21T01:51:38.2453622Z           "evidence": [
2026-06-21T01:51:38.2453713Z             {
2026-06-21T01:51:38.2453833Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T01:51:38.2453928Z               "line": 22
2026-06-21T01:51:38.2454009Z             }
2026-06-21T01:51:38.2454100Z           ]
2026-06-21T01:51:38.2454181Z         },
2026-06-21T01:51:38.2454271Z         "unit": {
2026-06-21T01:51:38.2454367Z           "complete": false,
2026-06-21T01:51:38.2454458Z           "evidence": []
2026-06-21T01:51:38.2454547Z         }
2026-06-21T01:51:38.2454628Z       }
2026-06-21T01:51:38.2454721Z     },
2026-06-21T01:51:38.2454801Z     {
2026-06-21T01:51:38.2454899Z       "id": "REQ-INSTALL-6",
2026-06-21T01:51:38.2456170Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-21T01:51:38.2456270Z       "requiredStages": [
2026-06-21T01:51:38.2456367Z         "impl",
2026-06-21T01:51:38.2456446Z         "unit"
2026-06-21T01:51:38.2456537Z       ],
2026-06-21T01:51:38.2456629Z       "stages": {
2026-06-21T01:51:38.2456837Z         "doc": {
2026-06-21T01:51:38.2456939Z           "complete": false,
2026-06-21T01:51:38.2457134Z           "evidence": []
2026-06-21T01:51:38.2457224Z         },
2026-06-21T01:51:38.2457311Z         "impl": {
2026-06-21T01:51:38.2457400Z           "complete": true,
2026-06-21T01:51:38.2457496Z           "evidence": [
2026-06-21T01:51:38.2457583Z             {
2026-06-21T01:51:38.2457710Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.2457795Z               "line": 61
2026-06-21T01:51:38.2457881Z             },
2026-06-21T01:51:38.2457963Z             {
2026-06-21T01:51:38.2458072Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.2458162Z               "line": 641
2026-06-21T01:51:38.2458248Z             },
2026-06-21T01:51:38.2458334Z             {
2026-06-21T01:51:38.2458448Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:51:38.2458544Z               "line": 191
2026-06-21T01:51:38.2458625Z             },
2026-06-21T01:51:38.2458711Z             {
2026-06-21T01:51:38.2458825Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:51:38.2458912Z               "line": 276
2026-06-21T01:51:38.2459087Z             },
2026-06-21T01:51:38.2459169Z             {
2026-06-21T01:51:38.2459278Z               "path": "crates/spt/src/main.rs",
2026-06-21T01:51:38.2459364Z               "line": 43
2026-06-21T01:51:38.2459454Z             },
2026-06-21T01:51:38.2459546Z             {
2026-06-21T01:51:38.2459654Z               "path": "installer/install.sh",
2026-06-21T01:51:38.2459740Z               "line": 104
2026-06-21T01:51:38.2459827Z             }
2026-06-21T01:51:38.2459908Z           ]
2026-06-21T01:51:38.2459998Z         },
2026-06-21T01:51:38.2460083Z         "int": {
2026-06-21T01:51:38.2460183Z           "complete": false,
2026-06-21T01:51:38.2460267Z           "evidence": []
2026-06-21T01:51:38.2460357Z         },
2026-06-21T01:51:38.2460438Z         "unit": {
2026-06-21T01:51:38.2460539Z           "complete": true,
2026-06-21T01:51:38.2460619Z           "evidence": [
2026-06-21T01:51:38.2460709Z             {
2026-06-21T01:51:38.2460835Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:51:38.2460920Z               "line": 894
2026-06-21T01:51:38.2461010Z             }
2026-06-21T01:51:38.2461092Z           ]
2026-06-21T01:51:38.2461173Z         }
2026-06-21T01:51:38.2461258Z       }
2026-06-21T01:51:38.2461344Z     },
2026-06-21T01:51:38.2461431Z     {
2026-06-21T01:51:38.2461526Z       "id": "REQ-INSTALL-7",
2026-06-21T01:51:38.2462651Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-21T01:51:38.2462747Z       "requiredStages": [
2026-06-21T01:51:38.2462841Z         "impl"
2026-06-21T01:51:38.2462926Z       ],
2026-06-21T01:51:38.2463016Z       "stages": {
2026-06-21T01:51:38.2463107Z         "doc": {
2026-06-21T01:51:38.2463191Z           "complete": false,
2026-06-21T01:51:38.2463281Z           "evidence": []
2026-06-21T01:51:38.2463363Z         },
2026-06-21T01:51:38.2463445Z         "impl": {
2026-06-21T01:51:38.2463544Z           "complete": true,
2026-06-21T01:51:38.2463634Z           "evidence": [
2026-06-21T01:51:38.2463711Z             {
2026-06-21T01:51:38.2463807Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2463896Z               "line": 3920
2026-06-21T01:51:38.2463978Z             },
2026-06-21T01:51:38.2464069Z             {
2026-06-21T01:51:38.2464182Z               "path": "installer/install.ps1",
2026-06-21T01:51:38.2464259Z               "line": 157
2026-06-21T01:51:38.2464345Z             }
2026-06-21T01:51:38.2464426Z           ]
2026-06-21T01:51:38.2464507Z         },
2026-06-21T01:51:38.2464698Z         "int": {
2026-06-21T01:51:38.2464797Z           "complete": false,
2026-06-21T01:51:38.2464985Z           "evidence": []
2026-06-21T01:51:38.2465070Z         },
2026-06-21T01:51:38.2465156Z         "unit": {
2026-06-21T01:51:38.2465242Z           "complete": false,
2026-06-21T01:51:38.2465328Z           "evidence": []
2026-06-21T01:51:38.2465413Z         }
2026-06-21T01:51:38.2465498Z       }
2026-06-21T01:51:38.2465583Z     },
2026-06-21T01:51:38.2465664Z     {
2026-06-21T01:51:38.2465758Z       "id": "REQ-INSTALL-8",
2026-06-21T01:51:38.2466792Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-21T01:51:38.2466898Z       "requiredStages": [
2026-06-21T01:51:38.2466992Z         "impl"
2026-06-21T01:51:38.2467074Z       ],
2026-06-21T01:51:38.2467169Z       "stages": {
2026-06-21T01:51:38.2467251Z         "doc": {
2026-06-21T01:51:38.2467355Z           "complete": false,
2026-06-21T01:51:38.2467441Z           "evidence": []
2026-06-21T01:51:38.2467532Z         },
2026-06-21T01:51:38.2467622Z         "impl": {
2026-06-21T01:51:38.2467717Z           "complete": true,
2026-06-21T01:51:38.2467809Z           "evidence": [
2026-06-21T01:51:38.2467895Z             {
2026-06-21T01:51:38.2468008Z               "path": "installer/install.ps1",
2026-06-21T01:51:38.2468095Z               "line": 184
2026-06-21T01:51:38.2468171Z             },
2026-06-21T01:51:38.2468261Z             {
2026-06-21T01:51:38.2468355Z               "path": "installer/install.sh",
2026-06-21T01:51:38.2468436Z               "line": 121
2026-06-21T01:51:38.2468513Z             }
2026-06-21T01:51:38.2468600Z           ]
2026-06-21T01:51:38.2468684Z         },
2026-06-21T01:51:38.2468765Z         "int": {
2026-06-21T01:51:38.2468866Z           "complete": false,
2026-06-21T01:51:38.2469022Z           "evidence": []
2026-06-21T01:51:38.2469105Z         },
2026-06-21T01:51:38.2469204Z         "unit": {
2026-06-21T01:51:38.2469299Z           "complete": false,
2026-06-21T01:51:38.2469385Z           "evidence": []
2026-06-21T01:51:38.2469477Z         }
2026-06-21T01:51:38.2469571Z       }
2026-06-21T01:51:38.2469652Z     },
2026-06-21T01:51:38.2469744Z     {
2026-06-21T01:51:38.2469825Z       "id": "REQ-INSTALL-9",
2026-06-21T01:51:38.2471056Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-21T01:51:38.2471161Z       "requiredStages": [
2026-06-21T01:51:38.2471246Z         "doc",
2026-06-21T01:51:38.2471337Z         "impl",
2026-06-21T01:51:38.2471423Z         "unit"
2026-06-21T01:51:38.2471508Z       ],
2026-06-21T01:51:38.2471599Z       "stages": {
2026-06-21T01:51:38.2471681Z         "doc": {
2026-06-21T01:51:38.2471766Z           "complete": true,
2026-06-21T01:51:38.2471856Z           "evidence": [
2026-06-21T01:51:38.2471942Z             {
2026-06-21T01:51:38.2472039Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.2472124Z               "line": 771
2026-06-21T01:51:38.2472204Z             }
2026-06-21T01:51:38.2472296Z           ]
2026-06-21T01:51:38.2472382Z         },
2026-06-21T01:51:38.2472467Z         "impl": {
2026-06-21T01:51:38.2472562Z           "complete": true,
2026-06-21T01:51:38.2472645Z           "evidence": [
2026-06-21T01:51:38.2472734Z             {
2026-06-21T01:51:38.2472834Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2473044Z               "line": 2535
2026-06-21T01:51:38.2473134Z             },
2026-06-21T01:51:38.2473206Z             {
2026-06-21T01:51:38.2473543Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2473630Z               "line": 2559
2026-06-21T01:51:38.2473709Z             }
2026-06-21T01:51:38.2473794Z           ]
2026-06-21T01:51:38.2473885Z         },
2026-06-21T01:51:38.2473971Z         "int": {
2026-06-21T01:51:38.2474056Z           "complete": false,
2026-06-21T01:51:38.2474142Z           "evidence": []
2026-06-21T01:51:38.2474228Z         },
2026-06-21T01:51:38.2474319Z         "unit": {
2026-06-21T01:51:38.2474404Z           "complete": true,
2026-06-21T01:51:38.2474504Z           "evidence": [
2026-06-21T01:51:38.2474582Z             {
2026-06-21T01:51:38.2474686Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2474785Z               "line": 7591
2026-06-21T01:51:38.2474867Z             },
2026-06-21T01:51:38.2474958Z             {
2026-06-21T01:51:38.2475062Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2475163Z               "line": 8433
2026-06-21T01:51:38.2475249Z             }
2026-06-21T01:51:38.2475320Z           ]
2026-06-21T01:51:38.2475410Z         }
2026-06-21T01:51:38.2475482Z       }
2026-06-21T01:51:38.2475564Z     },
2026-06-21T01:51:38.2475648Z     {
2026-06-21T01:51:38.2475749Z       "id": "REQ-KICK-1",
2026-06-21T01:51:38.2478234Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-21T01:51:38.2478350Z       "requiredStages": [
2026-06-21T01:51:38.2478431Z         "doc",
2026-06-21T01:51:38.2478525Z         "impl",
2026-06-21T01:51:38.2478597Z         "unit",
2026-06-21T01:51:38.2478689Z         "int"
2026-06-21T01:51:38.2478775Z       ],
2026-06-21T01:51:38.2478868Z       "stages": {
2026-06-21T01:51:38.2479025Z         "doc": {
2026-06-21T01:51:38.2479111Z           "complete": true,
2026-06-21T01:51:38.2479211Z           "evidence": [
2026-06-21T01:51:38.2479297Z             {
2026-06-21T01:51:38.2479388Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.2479474Z               "line": 342
2026-06-21T01:51:38.2479558Z             }
2026-06-21T01:51:38.2479645Z           ]
2026-06-21T01:51:38.2479727Z         },
2026-06-21T01:51:38.2479822Z         "impl": {
2026-06-21T01:51:38.2479907Z           "complete": true,
2026-06-21T01:51:38.2480008Z           "evidence": [
2026-06-21T01:51:38.2480089Z             {
2026-06-21T01:51:38.2480216Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T01:51:38.2480313Z               "line": 41
2026-06-21T01:51:38.2480399Z             },
2026-06-21T01:51:38.2480485Z             {
2026-06-21T01:51:38.2480589Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2480686Z               "line": 701
2026-06-21T01:51:38.2480770Z             }
2026-06-21T01:51:38.2480870Z           ]
2026-06-21T01:51:38.2480948Z         },
2026-06-21T01:51:38.2481024Z         "int": {
2026-06-21T01:51:38.2481122Z           "complete": true,
2026-06-21T01:51:38.2481207Z           "evidence": [
2026-06-21T01:51:38.2481298Z             {
2026-06-21T01:51:38.2481416Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:51:38.2481511Z               "line": 913
2026-06-21T01:51:38.2481708Z             }
2026-06-21T01:51:38.2481792Z           ]
2026-06-21T01:51:38.2481873Z         },
2026-06-21T01:51:38.2482060Z         "unit": {
2026-06-21T01:51:38.2482159Z           "complete": true,
2026-06-21T01:51:38.2482251Z           "evidence": [
2026-06-21T01:51:38.2482336Z             {
2026-06-21T01:51:38.2482454Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T01:51:38.2482541Z               "line": 205
2026-06-21T01:51:38.2482622Z             }
2026-06-21T01:51:38.2482708Z           ]
2026-06-21T01:51:38.2482793Z         }
2026-06-21T01:51:38.2482875Z       }
2026-06-21T01:51:38.2482960Z     },
2026-06-21T01:51:38.2483046Z     {
2026-06-21T01:51:38.2483132Z       "id": "REQ-MANIFEST-1",
2026-06-21T01:51:38.2483322Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-21T01:51:38.2483418Z       "requiredStages": [
2026-06-21T01:51:38.2483505Z         "doc",
2026-06-21T01:51:38.2483586Z         "impl",
2026-06-21T01:51:38.2483675Z         "unit"
2026-06-21T01:51:38.2483757Z       ],
2026-06-21T01:51:38.2483834Z       "stages": {
2026-06-21T01:51:38.2483929Z         "doc": {
2026-06-21T01:51:38.2484013Z           "complete": true,
2026-06-21T01:51:38.2484098Z           "evidence": [
2026-06-21T01:51:38.2484180Z             {
2026-06-21T01:51:38.2484287Z               "path": "docs/MANIFEST.md",
2026-06-21T01:51:38.2484378Z               "line": 19
2026-06-21T01:51:38.2484459Z             }
2026-06-21T01:51:38.2484545Z           ]
2026-06-21T01:51:38.2484626Z         },
2026-06-21T01:51:38.2484711Z         "impl": {
2026-06-21T01:51:38.2484803Z           "complete": true,
2026-06-21T01:51:38.2484898Z           "evidence": [
2026-06-21T01:51:38.2484983Z             {
2026-06-21T01:51:38.2485108Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2485198Z               "line": 18
2026-06-21T01:51:38.2485279Z             }
2026-06-21T01:51:38.2485364Z           ]
2026-06-21T01:51:38.2485452Z         },
2026-06-21T01:51:38.2485536Z         "int": {
2026-06-21T01:51:38.2485627Z           "complete": false,
2026-06-21T01:51:38.2485713Z           "evidence": []
2026-06-21T01:51:38.2485804Z         },
2026-06-21T01:51:38.2485889Z         "unit": {
2026-06-21T01:51:38.2485990Z           "complete": true,
2026-06-21T01:51:38.2486077Z           "evidence": [
2026-06-21T01:51:38.2486166Z             {
2026-06-21T01:51:38.2486281Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2486372Z               "line": 1029
2026-06-21T01:51:38.2486462Z             },
2026-06-21T01:51:38.2486542Z             {
2026-06-21T01:51:38.2486665Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2486756Z               "line": 1325
2026-06-21T01:51:38.2486845Z             },
2026-06-21T01:51:38.2486935Z             {
2026-06-21T01:51:38.2487050Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2487146Z               "line": 1337
2026-06-21T01:51:38.2487235Z             },
2026-06-21T01:51:38.2487321Z             {
2026-06-21T01:51:38.2487427Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2487531Z               "line": 1348
2026-06-21T01:51:38.2487621Z             },
2026-06-21T01:51:38.2487703Z             {
2026-06-21T01:51:38.2487827Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2487916Z               "line": 1365
2026-06-21T01:51:38.2488000Z             },
2026-06-21T01:51:38.2488089Z             {
2026-06-21T01:51:38.2488208Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2488304Z               "line": 1379
2026-06-21T01:51:38.2488390Z             },
2026-06-21T01:51:38.2488475Z             {
2026-06-21T01:51:38.2488595Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2488691Z               "line": 1495
2026-06-21T01:51:38.2488775Z             },
2026-06-21T01:51:38.2488857Z             {
2026-06-21T01:51:38.2489157Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2489244Z               "line": 1510
2026-06-21T01:51:38.2489423Z             },
2026-06-21T01:51:38.2489513Z             {
2026-06-21T01:51:38.2489638Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2489729Z               "line": 1621
2026-06-21T01:51:38.2489818Z             },
2026-06-21T01:51:38.2489915Z             {
2026-06-21T01:51:38.2490034Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2490119Z               "line": 1632
2026-06-21T01:51:38.2490200Z             }
2026-06-21T01:51:38.2490287Z           ]
2026-06-21T01:51:38.2490368Z         }
2026-06-21T01:51:38.2490457Z       }
2026-06-21T01:51:38.2490534Z     },
2026-06-21T01:51:38.2490616Z     {
2026-06-21T01:51:38.2490716Z       "id": "REQ-MANIFEST-2",
2026-06-21T01:51:38.2491226Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-21T01:51:38.2491330Z       "requiredStages": [
2026-06-21T01:51:38.2491420Z         "doc",
2026-06-21T01:51:38.2491503Z         "impl",
2026-06-21T01:51:38.2491584Z         "unit"
2026-06-21T01:51:38.2491668Z       ],
2026-06-21T01:51:38.2491749Z       "stages": {
2026-06-21T01:51:38.2491830Z         "doc": {
2026-06-21T01:51:38.2491920Z           "complete": true,
2026-06-21T01:51:38.2492013Z           "evidence": [
2026-06-21T01:51:38.2492090Z             {
2026-06-21T01:51:38.2492185Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.2492268Z               "line": 75
2026-06-21T01:51:38.2492352Z             }
2026-06-21T01:51:38.2492428Z           ]
2026-06-21T01:51:38.2492515Z         },
2026-06-21T01:51:38.2492596Z         "impl": {
2026-06-21T01:51:38.2492681Z           "complete": true,
2026-06-21T01:51:38.2492777Z           "evidence": [
2026-06-21T01:51:38.2492849Z             {
2026-06-21T01:51:38.2492977Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2493067Z               "line": 82
2026-06-21T01:51:38.2493154Z             },
2026-06-21T01:51:38.2493244Z             {
2026-06-21T01:51:38.2493368Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:51:38.2493454Z               "line": 15
2026-06-21T01:51:38.2493539Z             },
2026-06-21T01:51:38.2493621Z             {
2026-06-21T01:51:38.2493736Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:51:38.2493831Z               "line": 65
2026-06-21T01:51:38.2493916Z             },
2026-06-21T01:51:38.2493997Z             {
2026-06-21T01:51:38.2494113Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:51:38.2494202Z               "line": 83
2026-06-21T01:51:38.2494288Z             },
2026-06-21T01:51:38.2494375Z             {
2026-06-21T01:51:38.2494498Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:51:38.2494592Z               "line": 183
2026-06-21T01:51:38.2494673Z             },
2026-06-21T01:51:38.2494760Z             {
2026-06-21T01:51:38.2494871Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2494952Z               "line": 527
2026-06-21T01:51:38.2495038Z             },
2026-06-21T01:51:38.2495129Z             {
2026-06-21T01:51:38.2495286Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2495363Z               "line": 553
2026-06-21T01:51:38.2495453Z             },
2026-06-21T01:51:38.2495533Z             {
2026-06-21T01:51:38.2495654Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2495740Z               "line": 671
2026-06-21T01:51:38.2495825Z             },
2026-06-21T01:51:38.2495910Z             {
2026-06-21T01:51:38.2496021Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2496106Z               "line": 696
2026-06-21T01:51:38.2496192Z             },
2026-06-21T01:51:38.2496273Z             {
2026-06-21T01:51:38.2496388Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2496593Z               "line": 719
2026-06-21T01:51:38.2496759Z             },
2026-06-21T01:51:38.2496845Z             {
2026-06-21T01:51:38.2496966Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2497055Z               "line": 734
2026-06-21T01:51:38.2497145Z             },
2026-06-21T01:51:38.2497235Z             {
2026-06-21T01:51:38.2497340Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2497433Z               "line": 5567
2026-06-21T01:51:38.2497514Z             },
2026-06-21T01:51:38.2497600Z             {
2026-06-21T01:51:38.2497701Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2497795Z               "line": 5581
2026-06-21T01:51:38.2497886Z             },
2026-06-21T01:51:38.2497973Z             {
2026-06-21T01:51:38.2498077Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2498162Z               "line": 5615
2026-06-21T01:51:38.2498250Z             }
2026-06-21T01:51:38.2498330Z           ]
2026-06-21T01:51:38.2498415Z         },
2026-06-21T01:51:38.2498506Z         "int": {
2026-06-21T01:51:38.2498593Z           "complete": false,
2026-06-21T01:51:38.2498683Z           "evidence": []
2026-06-21T01:51:38.2498754Z         },
2026-06-21T01:51:38.2498845Z         "unit": {
2026-06-21T01:51:38.2498936Z           "complete": true,
2026-06-21T01:51:38.2499116Z           "evidence": [
2026-06-21T01:51:38.2499208Z             {
2026-06-21T01:51:38.2499317Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:51:38.2499398Z               "line": 921
2026-06-21T01:51:38.2499475Z             },
2026-06-21T01:51:38.2499556Z             {
2026-06-21T01:51:38.2499679Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:51:38.2499770Z               "line": 211
2026-06-21T01:51:38.2499857Z             },
2026-06-21T01:51:38.2499941Z             {
2026-06-21T01:51:38.2500064Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:51:38.2500150Z               "line": 272
2026-06-21T01:51:38.2500237Z             },
2026-06-21T01:51:38.2500327Z             {
2026-06-21T01:51:38.2500441Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:51:38.2500532Z               "line": 313
2026-06-21T01:51:38.2500609Z             },
2026-06-21T01:51:38.2500693Z             {
2026-06-21T01:51:38.2500804Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:51:38.2500890Z               "line": 325
2026-06-21T01:51:38.2500975Z             },
2026-06-21T01:51:38.2501061Z             {
2026-06-21T01:51:38.2501180Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:51:38.2501261Z               "line": 336
2026-06-21T01:51:38.2501351Z             },
2026-06-21T01:51:38.2501434Z             {
2026-06-21T01:51:38.2501552Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:51:38.2501633Z               "line": 345
2026-06-21T01:51:38.2501719Z             },
2026-06-21T01:51:38.2501806Z             {
2026-06-21T01:51:38.2501918Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:51:38.2502005Z               "line": 361
2026-06-21T01:51:38.2502087Z             },
2026-06-21T01:51:38.2502168Z             {
2026-06-21T01:51:38.2502280Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:51:38.2502376Z               "line": 444
2026-06-21T01:51:38.2502466Z             },
2026-06-21T01:51:38.2502550Z             {
2026-06-21T01:51:38.2502673Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2502765Z               "line": 958
2026-06-21T01:51:38.2502842Z             },
2026-06-21T01:51:38.2502926Z             {
2026-06-21T01:51:38.2503051Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2503151Z               "line": 982
2026-06-21T01:51:38.2503227Z             },
2026-06-21T01:51:38.2503308Z             {
2026-06-21T01:51:38.2503419Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2503618Z               "line": 1008
2026-06-21T01:51:38.2503824Z             },
2026-06-21T01:51:38.2503903Z             {
2026-06-21T01:51:38.2504034Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2504118Z               "line": 1027
2026-06-21T01:51:38.2504204Z             },
2026-06-21T01:51:38.2508041Z             {
2026-06-21T01:51:38.2508208Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2508308Z               "line": 1058
2026-06-21T01:51:38.2508394Z             },
2026-06-21T01:51:38.2508480Z             {
2026-06-21T01:51:38.2508609Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:51:38.2508708Z               "line": 309
2026-06-21T01:51:38.2508785Z             },
2026-06-21T01:51:38.2508876Z             {
2026-06-21T01:51:38.2509086Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:51:38.2509162Z               "line": 606
2026-06-21T01:51:38.2509276Z             },
2026-06-21T01:51:38.2509352Z             {
2026-06-21T01:51:38.2509459Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2509538Z               "line": 8610
2026-06-21T01:51:38.2509633Z             },
2026-06-21T01:51:38.2509715Z             {
2026-06-21T01:51:38.2509816Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2509905Z               "line": 9558
2026-06-21T01:51:38.2509987Z             }
2026-06-21T01:51:38.2510069Z           ]
2026-06-21T01:51:38.2510154Z         }
2026-06-21T01:51:38.2510249Z       }
2026-06-21T01:51:38.2510330Z     },
2026-06-21T01:51:38.2510403Z     {
2026-06-21T01:51:38.2510506Z       "id": "REQ-MANIFEST-3",
2026-06-21T01:51:38.2511192Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-21T01:51:38.2511291Z       "requiredStages": [
2026-06-21T01:51:38.2511379Z         "doc",
2026-06-21T01:51:38.2511469Z         "impl",
2026-06-21T01:51:38.2511549Z         "unit"
2026-06-21T01:51:38.2511636Z       ],
2026-06-21T01:51:38.2511717Z       "stages": {
2026-06-21T01:51:38.2511802Z         "doc": {
2026-06-21T01:51:38.2511902Z           "complete": true,
2026-06-21T01:51:38.2511984Z           "evidence": [
2026-06-21T01:51:38.2512065Z             {
2026-06-21T01:51:38.2512170Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.2512250Z               "line": 81
2026-06-21T01:51:38.2512333Z             }
2026-06-21T01:51:38.2512413Z           ]
2026-06-21T01:51:38.2512498Z         },
2026-06-21T01:51:38.2512580Z         "impl": {
2026-06-21T01:51:38.2512671Z           "complete": true,
2026-06-21T01:51:38.2512770Z           "evidence": [
2026-06-21T01:51:38.2512850Z             {
2026-06-21T01:51:38.2512984Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2513073Z               "line": 92
2026-06-21T01:51:38.2513157Z             },
2026-06-21T01:51:38.2513243Z             {
2026-06-21T01:51:38.2513368Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:51:38.2513458Z               "line": 101
2026-06-21T01:51:38.2513534Z             },
2026-06-21T01:51:38.2513621Z             {
2026-06-21T01:51:38.2513730Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:51:38.2513820Z               "line": 132
2026-06-21T01:51:38.2513902Z             },
2026-06-21T01:51:38.2513993Z             {
2026-06-21T01:51:38.2514116Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2514207Z               "line": 577
2026-06-21T01:51:38.2514293Z             },
2026-06-21T01:51:38.2514374Z             {
2026-06-21T01:51:38.2514498Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2514584Z               "line": 633
2026-06-21T01:51:38.2514665Z             },
2026-06-21T01:51:38.2514751Z             {
2026-06-21T01:51:38.2514856Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2515098Z               "line": 5628
2026-06-21T01:51:38.2515181Z             },
2026-06-21T01:51:38.2515355Z             {
2026-06-21T01:51:38.2515457Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2515543Z               "line": 5654
2026-06-21T01:51:38.2515628Z             }
2026-06-21T01:51:38.2515708Z           ]
2026-06-21T01:51:38.2515793Z         },
2026-06-21T01:51:38.2515865Z         "int": {
2026-06-21T01:51:38.2515964Z           "complete": false,
2026-06-21T01:51:38.2516053Z           "evidence": []
2026-06-21T01:51:38.2516130Z         },
2026-06-21T01:51:38.2516217Z         "unit": {
2026-06-21T01:51:38.2516311Z           "complete": true,
2026-06-21T01:51:38.2516396Z           "evidence": [
2026-06-21T01:51:38.2516478Z             {
2026-06-21T01:51:38.2516603Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:51:38.2516692Z               "line": 371
2026-06-21T01:51:38.2516779Z             },
2026-06-21T01:51:38.2516874Z             {
2026-06-21T01:51:38.2516992Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:51:38.2517088Z               "line": 429
2026-06-21T01:51:38.2517175Z             },
2026-06-21T01:51:38.2517260Z             {
2026-06-21T01:51:38.2517384Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2517476Z               "line": 1082
2026-06-21T01:51:38.2517560Z             },
2026-06-21T01:51:38.2517641Z             {
2026-06-21T01:51:38.2517757Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2517842Z               "line": 8703
2026-06-21T01:51:38.2517932Z             }
2026-06-21T01:51:38.2518018Z           ]
2026-06-21T01:51:38.2518105Z         }
2026-06-21T01:51:38.2518190Z       }
2026-06-21T01:51:38.2518270Z     },
2026-06-21T01:51:38.2518355Z     {
2026-06-21T01:51:38.2518437Z       "id": "REQ-MANIFEST-4",
2026-06-21T01:51:38.2519254Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-21T01:51:38.2519365Z       "requiredStages": [
2026-06-21T01:51:38.2519440Z         "doc",
2026-06-21T01:51:38.2519526Z         "impl",
2026-06-21T01:51:38.2519612Z         "unit"
2026-06-21T01:51:38.2519699Z       ],
2026-06-21T01:51:38.2519783Z       "stages": {
2026-06-21T01:51:38.2519869Z         "doc": {
2026-06-21T01:51:38.2519965Z           "complete": true,
2026-06-21T01:51:38.2520047Z           "evidence": [
2026-06-21T01:51:38.2520132Z             {
2026-06-21T01:51:38.2520232Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.2520314Z               "line": 88
2026-06-21T01:51:38.2520399Z             }
2026-06-21T01:51:38.2520485Z           ]
2026-06-21T01:51:38.2520570Z         },
2026-06-21T01:51:38.2520643Z         "impl": {
2026-06-21T01:51:38.2520742Z           "complete": true,
2026-06-21T01:51:38.2520828Z           "evidence": [
2026-06-21T01:51:38.2520920Z             {
2026-06-21T01:51:38.2521043Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2521142Z               "line": 100
2026-06-21T01:51:38.2521222Z             },
2026-06-21T01:51:38.2521309Z             {
2026-06-21T01:51:38.2521432Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2521513Z               "line": 183
2026-06-21T01:51:38.2521604Z             },
2026-06-21T01:51:38.2521676Z             {
2026-06-21T01:51:38.2521799Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2521891Z               "line": 83
2026-06-21T01:51:38.2521977Z             },
2026-06-21T01:51:38.2522058Z             {
2026-06-21T01:51:38.2522166Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.2522254Z               "line": 629
2026-06-21T01:51:38.2522334Z             },
2026-06-21T01:51:38.2522415Z             {
2026-06-21T01:51:38.2522534Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.2522730Z               "line": 654
2026-06-21T01:51:38.2522893Z             }
2026-06-21T01:51:38.2522978Z           ]
2026-06-21T01:51:38.2523063Z         },
2026-06-21T01:51:38.2523149Z         "int": {
2026-06-21T01:51:38.2523241Z           "complete": false,
2026-06-21T01:51:38.2523335Z           "evidence": []
2026-06-21T01:51:38.2523410Z         },
2026-06-21T01:51:38.2523496Z         "unit": {
2026-06-21T01:51:38.2523577Z           "complete": true,
2026-06-21T01:51:38.2523675Z           "evidence": [
2026-06-21T01:51:38.2523755Z             {
2026-06-21T01:51:38.2523875Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2523962Z               "line": 1445
2026-06-21T01:51:38.2524047Z             },
2026-06-21T01:51:38.2524132Z             {
2026-06-21T01:51:38.2524248Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2524347Z               "line": 1478
2026-06-21T01:51:38.2524433Z             },
2026-06-21T01:51:38.2524515Z             {
2026-06-21T01:51:38.2524633Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.2524723Z               "line": 988
2026-06-21T01:51:38.2524811Z             }
2026-06-21T01:51:38.2524891Z           ]
2026-06-21T01:51:38.2524972Z         }
2026-06-21T01:51:38.2525058Z       }
2026-06-21T01:51:38.2525135Z     },
2026-06-21T01:51:38.2525220Z     {
2026-06-21T01:51:38.2525315Z       "id": "REQ-MANIFEST-5",
2026-06-21T01:51:38.2528331Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-21T01:51:38.2528449Z       "requiredStages": [
2026-06-21T01:51:38.2528535Z         "doc",
2026-06-21T01:51:38.2528627Z         "impl",
2026-06-21T01:51:38.2528713Z         "unit"
2026-06-21T01:51:38.2528792Z       ],
2026-06-21T01:51:38.2528873Z       "stages": {
2026-06-21T01:51:38.2529035Z         "doc": {
2026-06-21T01:51:38.2529123Z           "complete": true,
2026-06-21T01:51:38.2529213Z           "evidence": [
2026-06-21T01:51:38.2529295Z             {
2026-06-21T01:51:38.2529401Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.2529495Z               "line": 83
2026-06-21T01:51:38.2529576Z             }
2026-06-21T01:51:38.2529663Z           ]
2026-06-21T01:51:38.2529744Z         },
2026-06-21T01:51:38.2529828Z         "impl": {
2026-06-21T01:51:38.2529930Z           "complete": true,
2026-06-21T01:51:38.2530015Z           "evidence": [
2026-06-21T01:51:38.2530100Z             {
2026-06-21T01:51:38.2530216Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:51:38.2530311Z               "line": 120
2026-06-21T01:51:38.2530397Z             }
2026-06-21T01:51:38.2530468Z           ]
2026-06-21T01:51:38.2530545Z         },
2026-06-21T01:51:38.2530631Z         "int": {
2026-06-21T01:51:38.2530726Z           "complete": false,
2026-06-21T01:51:38.2530821Z           "evidence": []
2026-06-21T01:51:38.2530908Z         },
2026-06-21T01:51:38.2530992Z         "unit": {
2026-06-21T01:51:38.2531078Z           "complete": true,
2026-06-21T01:51:38.2531170Z           "evidence": [
2026-06-21T01:51:38.2531383Z             {
2026-06-21T01:51:38.2531508Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:51:38.2531687Z               "line": 404
2026-06-21T01:51:38.2531772Z             },
2026-06-21T01:51:38.2531859Z             {
2026-06-21T01:51:38.2531969Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2532064Z               "line": 1155
2026-06-21T01:51:38.2532145Z             },
2026-06-21T01:51:38.2532227Z             {
2026-06-21T01:51:38.2532345Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2532421Z               "line": 1184
2026-06-21T01:51:38.2532514Z             },
2026-06-21T01:51:38.2532594Z             {
2026-06-21T01:51:38.2532722Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2532804Z               "line": 1224
2026-06-21T01:51:38.2532889Z             },
2026-06-21T01:51:38.2532975Z             {
2026-06-21T01:51:38.2533090Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2533190Z               "line": 1239
2026-06-21T01:51:38.2533275Z             }
2026-06-21T01:51:38.2533356Z           ]
2026-06-21T01:51:38.2533439Z         }
2026-06-21T01:51:38.2533524Z       }
2026-06-21T01:51:38.2533609Z     },
2026-06-21T01:51:38.2533690Z     {
2026-06-21T01:51:38.2533787Z       "id": "REQ-MANIFEST-6",
2026-06-21T01:51:38.2535875Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-21T01:51:38.2535976Z       "requiredStages": [
2026-06-21T01:51:38.2536071Z         "doc",
2026-06-21T01:51:38.2536156Z         "unit"
2026-06-21T01:51:38.2536237Z       ],
2026-06-21T01:51:38.2536330Z       "stages": {
2026-06-21T01:51:38.2536414Z         "doc": {
2026-06-21T01:51:38.2536510Z           "complete": true,
2026-06-21T01:51:38.2536601Z           "evidence": [
2026-06-21T01:51:38.2536692Z             {
2026-06-21T01:51:38.2536800Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.2536885Z               "line": 141
2026-06-21T01:51:38.2536976Z             }
2026-06-21T01:51:38.2537060Z           ]
2026-06-21T01:51:38.2537150Z         },
2026-06-21T01:51:38.2537226Z         "impl": {
2026-06-21T01:51:38.2537322Z           "complete": false,
2026-06-21T01:51:38.2537408Z           "evidence": []
2026-06-21T01:51:38.2537493Z         },
2026-06-21T01:51:38.2537574Z         "int": {
2026-06-21T01:51:38.2537661Z           "complete": false,
2026-06-21T01:51:38.2537760Z           "evidence": []
2026-06-21T01:51:38.2537841Z         },
2026-06-21T01:51:38.2537933Z         "unit": {
2026-06-21T01:51:38.2538028Z           "complete": true,
2026-06-21T01:51:38.2538113Z           "evidence": [
2026-06-21T01:51:38.2538199Z             {
2026-06-21T01:51:38.2538328Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.2538423Z               "line": 1261
2026-06-21T01:51:38.2538504Z             }
2026-06-21T01:51:38.2538600Z           ]
2026-06-21T01:51:38.2538685Z         }
2026-06-21T01:51:38.2538757Z       }
2026-06-21T01:51:38.2538838Z     },
2026-06-21T01:51:38.2538920Z     {
2026-06-21T01:51:38.2539100Z       "id": "REQ-MANIFEST-7",
2026-06-21T01:51:38.2542131Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-21T01:51:38.2542458Z       "requiredStages": [
2026-06-21T01:51:38.2542530Z         "doc",
2026-06-21T01:51:38.2542619Z         "impl",
2026-06-21T01:51:38.2542701Z         "unit"
2026-06-21T01:51:38.2542782Z       ],
2026-06-21T01:51:38.2542863Z       "stages": {
2026-06-21T01:51:38.2542948Z         "doc": {
2026-06-21T01:51:38.2543045Z           "complete": true,
2026-06-21T01:51:38.2543130Z           "evidence": [
2026-06-21T01:51:38.2543215Z             {
2026-06-21T01:51:38.2543321Z               "path": "docs/MANIFEST.md",
2026-06-21T01:51:38.2543407Z               "line": 35
2026-06-21T01:51:38.2543487Z             }
2026-06-21T01:51:38.2543573Z           ]
2026-06-21T01:51:38.2543660Z         },
2026-06-21T01:51:38.2543741Z         "impl": {
2026-06-21T01:51:38.2543826Z           "complete": true,
2026-06-21T01:51:38.2543912Z           "evidence": [
2026-06-21T01:51:38.2543994Z             {
2026-06-21T01:51:38.2544121Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T01:51:38.2544202Z               "line": 54
2026-06-21T01:51:38.2544289Z             }
2026-06-21T01:51:38.2544375Z           ]
2026-06-21T01:51:38.2544459Z         },
2026-06-21T01:51:38.2544535Z         "int": {
2026-06-21T01:51:38.2544640Z           "complete": false,
2026-06-21T01:51:38.2544734Z           "evidence": []
2026-06-21T01:51:38.2544819Z         },
2026-06-21T01:51:38.2544904Z         "unit": {
2026-06-21T01:51:38.2544991Z           "complete": true,
2026-06-21T01:51:38.2545077Z           "evidence": [
2026-06-21T01:51:38.2545157Z             {
2026-06-21T01:51:38.2545287Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2545373Z               "line": 1638
2026-06-21T01:51:38.2545453Z             }
2026-06-21T01:51:38.2545533Z           ]
2026-06-21T01:51:38.2545612Z         }
2026-06-21T01:51:38.2545702Z       }
2026-06-21T01:51:38.2545782Z     },
2026-06-21T01:51:38.2545868Z     {
2026-06-21T01:51:38.2545964Z       "id": "REQ-MANIFEST-8",
2026-06-21T01:51:38.2548249Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-21T01:51:38.2548363Z       "requiredStages": [
2026-06-21T01:51:38.2548449Z         "doc",
2026-06-21T01:51:38.2548531Z         "impl",
2026-06-21T01:51:38.2548617Z         "unit",
2026-06-21T01:51:38.2548706Z         "int"
2026-06-21T01:51:38.2548793Z       ],
2026-06-21T01:51:38.2548874Z       "stages": {
2026-06-21T01:51:38.2549035Z         "doc": {
2026-06-21T01:51:38.2549132Z           "complete": true,
2026-06-21T01:51:38.2549222Z           "evidence": [
2026-06-21T01:51:38.2549307Z             {
2026-06-21T01:51:38.2549408Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.2549612Z               "line": 184
2026-06-21T01:51:38.2549699Z             },
2026-06-21T01:51:38.2549785Z             {
2026-06-21T01:51:38.2549974Z               "path": "docs/MANIFEST.md",
2026-06-21T01:51:38.2550064Z               "line": 46
2026-06-21T01:51:38.2550150Z             }
2026-06-21T01:51:38.2550234Z           ]
2026-06-21T01:51:38.2550314Z         },
2026-06-21T01:51:38.2550396Z         "impl": {
2026-06-21T01:51:38.2550487Z           "complete": true,
2026-06-21T01:51:38.2550587Z           "evidence": [
2026-06-21T01:51:38.2550668Z             {
2026-06-21T01:51:38.2550802Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:51:38.2550883Z               "line": 222
2026-06-21T01:51:38.2550968Z             },
2026-06-21T01:51:38.2551055Z             {
2026-06-21T01:51:38.2551164Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:51:38.2551254Z               "line": 306
2026-06-21T01:51:38.2551336Z             }
2026-06-21T01:51:38.2551422Z           ]
2026-06-21T01:51:38.2551502Z         },
2026-06-21T01:51:38.2551583Z         "int": {
2026-06-21T01:51:38.2551670Z           "complete": true,
2026-06-21T01:51:38.2551755Z           "evidence": [
2026-06-21T01:51:38.2551841Z             {
2026-06-21T01:51:38.2551960Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T01:51:38.2552047Z               "line": 18
2026-06-21T01:51:38.2552127Z             }
2026-06-21T01:51:38.2552212Z           ]
2026-06-21T01:51:38.2552300Z         },
2026-06-21T01:51:38.2552381Z         "unit": {
2026-06-21T01:51:38.2552474Z           "complete": true,
2026-06-21T01:51:38.2552561Z           "evidence": [
2026-06-21T01:51:38.2552643Z             {
2026-06-21T01:51:38.2552770Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2552865Z               "line": 1656
2026-06-21T01:51:38.2552946Z             },
2026-06-21T01:51:38.2553032Z             {
2026-06-21T01:51:38.2553155Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:51:38.2553246Z               "line": 316
2026-06-21T01:51:38.2553338Z             },
2026-06-21T01:51:38.2553414Z             {
2026-06-21T01:51:38.2553527Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:51:38.2553610Z               "line": 332
2026-06-21T01:51:38.2553695Z             },
2026-06-21T01:51:38.2553776Z             {
2026-06-21T01:51:38.2553885Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:51:38.2553981Z               "line": 345
2026-06-21T01:51:38.2554057Z             },
2026-06-21T01:51:38.2554147Z             {
2026-06-21T01:51:38.2554263Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:51:38.2554343Z               "line": 422
2026-06-21T01:51:38.2554429Z             },
2026-06-21T01:51:38.2554510Z             {
2026-06-21T01:51:38.2554621Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:51:38.2554700Z               "line": 436
2026-06-21T01:51:38.2554786Z             }
2026-06-21T01:51:38.2554873Z           ]
2026-06-21T01:51:38.2554954Z         }
2026-06-21T01:51:38.2555043Z       }
2026-06-21T01:51:38.2555128Z     },
2026-06-21T01:51:38.2555210Z     {
2026-06-21T01:51:38.2555295Z       "id": "REQ-MESH-1",
2026-06-21T01:51:38.2557392Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-21T01:51:38.2557497Z       "requiredStages": [
2026-06-21T01:51:38.2557673Z         "impl",
2026-06-21T01:51:38.2557755Z         "unit",
2026-06-21T01:51:38.2557840Z         "int"
2026-06-21T01:51:38.2558000Z       ],
2026-06-21T01:51:38.2558091Z       "stages": {
2026-06-21T01:51:38.2558176Z         "doc": {
2026-06-21T01:51:38.2558275Z           "complete": false,
2026-06-21T01:51:38.2558366Z           "evidence": []
2026-06-21T01:51:38.2558452Z         },
2026-06-21T01:51:38.2558542Z         "impl": {
2026-06-21T01:51:38.2558623Z           "complete": true,
2026-06-21T01:51:38.2558729Z           "evidence": [
2026-06-21T01:51:38.2558814Z             {
2026-06-21T01:51:38.2559034Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.2559124Z               "line": 922
2026-06-21T01:51:38.2559209Z             },
2026-06-21T01:51:38.2559295Z             {
2026-06-21T01:51:38.2559425Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:51:38.2559520Z               "line": 38
2026-06-21T01:51:38.2559605Z             },
2026-06-21T01:51:38.2559693Z             {
2026-06-21T01:51:38.2559815Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:51:38.2559901Z               "line": 161
2026-06-21T01:51:38.2559983Z             },
2026-06-21T01:51:38.2560069Z             {
2026-06-21T01:51:38.2560192Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:51:38.2560279Z               "line": 206
2026-06-21T01:51:38.2560364Z             },
2026-06-21T01:51:38.2560458Z             {
2026-06-21T01:51:38.2560572Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.2560668Z               "line": 57
2026-06-21T01:51:38.2560752Z             },
2026-06-21T01:51:38.2560832Z             {
2026-06-21T01:51:38.2560961Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:51:38.2561057Z               "line": 24
2026-06-21T01:51:38.2561147Z             },
2026-06-21T01:51:38.2561218Z             {
2026-06-21T01:51:38.2561348Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:51:38.2561438Z               "line": 142
2026-06-21T01:51:38.2561528Z             },
2026-06-21T01:51:38.2561610Z             {
2026-06-21T01:51:38.2561743Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:51:38.2561819Z               "line": 162
2026-06-21T01:51:38.2561901Z             }
2026-06-21T01:51:38.2561986Z           ]
2026-06-21T01:51:38.2562067Z         },
2026-06-21T01:51:38.2562157Z         "int": {
2026-06-21T01:51:38.2562245Z           "complete": true,
2026-06-21T01:51:38.2562344Z           "evidence": [
2026-06-21T01:51:38.2562425Z             {
2026-06-21T01:51:38.2562550Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T01:51:38.2562635Z               "line": 67
2026-06-21T01:51:38.2562715Z             },
2026-06-21T01:51:38.2562806Z             {
2026-06-21T01:51:38.2562931Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T01:51:38.2563021Z               "line": 93
2026-06-21T01:51:38.2563116Z             },
2026-06-21T01:51:38.2563199Z             {
2026-06-21T01:51:38.2563326Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T01:51:38.2563415Z               "line": 117
2026-06-21T01:51:38.2563501Z             },
2026-06-21T01:51:38.2563583Z             {
2026-06-21T01:51:38.2563706Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T01:51:38.2563797Z               "line": 134
2026-06-21T01:51:38.2563879Z             }
2026-06-21T01:51:38.2563960Z           ]
2026-06-21T01:51:38.2564040Z         },
2026-06-21T01:51:38.2564126Z         "unit": {
2026-06-21T01:51:38.2564222Z           "complete": true,
2026-06-21T01:51:38.2564303Z           "evidence": [
2026-06-21T01:51:38.2564388Z             {
2026-06-21T01:51:38.2564503Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.2564598Z               "line": 427
2026-06-21T01:51:38.2564684Z             },
2026-06-21T01:51:38.2564885Z             {
2026-06-21T01:51:38.2565017Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:51:38.2565181Z               "line": 376
2026-06-21T01:51:38.2565274Z             },
2026-06-21T01:51:38.2565346Z             {
2026-06-21T01:51:38.2565477Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:51:38.2565561Z               "line": 412
2026-06-21T01:51:38.2565646Z             },
2026-06-21T01:51:38.2565732Z             {
2026-06-21T01:51:38.2565860Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:51:38.2565949Z               "line": 427
2026-06-21T01:51:38.2566034Z             },
2026-06-21T01:51:38.2566126Z             {
2026-06-21T01:51:38.2566249Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:51:38.2566344Z               "line": 438
2026-06-21T01:51:38.2566436Z             },
2026-06-21T01:51:38.2566522Z             {
2026-06-21T01:51:38.2566650Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:51:38.2566741Z               "line": 449
2026-06-21T01:51:38.2566826Z             },
2026-06-21T01:51:38.2566916Z             {
2026-06-21T01:51:38.2567042Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:51:38.2567136Z               "line": 460
2026-06-21T01:51:38.2567222Z             },
2026-06-21T01:51:38.2567298Z             {
2026-06-21T01:51:38.2567428Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:51:38.2567509Z               "line": 496
2026-06-21T01:51:38.2567599Z             },
2026-06-21T01:51:38.2567681Z             {
2026-06-21T01:51:38.2567803Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:51:38.2567889Z               "line": 519
2026-06-21T01:51:38.2567972Z             },
2026-06-21T01:51:38.2568058Z             {
2026-06-21T01:51:38.2568181Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:51:38.2568272Z               "line": 546
2026-06-21T01:51:38.2568363Z             }
2026-06-21T01:51:38.2568442Z           ]
2026-06-21T01:51:38.2568533Z         }
2026-06-21T01:51:38.2568623Z       }
2026-06-21T01:51:38.2568704Z     },
2026-06-21T01:51:38.2568787Z     {
2026-06-21T01:51:38.2568882Z       "id": "REQ-MESH-2",
2026-06-21T01:51:38.2571655Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-21T01:51:38.2571778Z       "requiredStages": [
2026-06-21T01:51:38.2571870Z         "impl",
2026-06-21T01:51:38.2571955Z         "unit",
2026-06-21T01:51:38.2572045Z         "int"
2026-06-21T01:51:38.2572127Z       ],
2026-06-21T01:51:38.2572217Z       "stages": {
2026-06-21T01:51:38.2572303Z         "doc": {
2026-06-21T01:51:38.2572398Z           "complete": false,
2026-06-21T01:51:38.2572495Z           "evidence": []
2026-06-21T01:51:38.2572575Z         },
2026-06-21T01:51:38.2572651Z         "impl": {
2026-06-21T01:51:38.2572732Z           "complete": true,
2026-06-21T01:51:38.2572819Z           "evidence": [
2026-06-21T01:51:38.2572904Z             {
2026-06-21T01:51:38.2573023Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.2573105Z               "line": 757
2026-06-21T01:51:38.2573357Z             },
2026-06-21T01:51:38.2573444Z             {
2026-06-21T01:51:38.2573561Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.2573754Z               "line": 118
2026-06-21T01:51:38.2573848Z             },
2026-06-21T01:51:38.2573924Z             {
2026-06-21T01:51:38.2574042Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.2574129Z               "line": 347
2026-06-21T01:51:38.2574215Z             },
2026-06-21T01:51:38.2574299Z             {
2026-06-21T01:51:38.2574410Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.2574505Z               "line": 389
2026-06-21T01:51:38.2574586Z             },
2026-06-21T01:51:38.2574672Z             {
2026-06-21T01:51:38.2574782Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.2574887Z               "line": 403
2026-06-21T01:51:38.2574972Z             },
2026-06-21T01:51:38.2575059Z             {
2026-06-21T01:51:38.2575187Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.2575272Z               "line": 492
2026-06-21T01:51:38.2575360Z             },
2026-06-21T01:51:38.2575436Z             {
2026-06-21T01:51:38.2575559Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.2575640Z               "line": 507
2026-06-21T01:51:38.2575731Z             },
2026-06-21T01:51:38.2575821Z             {
2026-06-21T01:51:38.2575931Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.2576027Z               "line": 534
2026-06-21T01:51:38.2576112Z             },
2026-06-21T01:51:38.2576206Z             {
2026-06-21T01:51:38.2576330Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:51:38.2576425Z               "line": 207
2026-06-21T01:51:38.2576514Z             },
2026-06-21T01:51:38.2576599Z             {
2026-06-21T01:51:38.2576729Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:51:38.2576809Z               "line": 755
2026-06-21T01:51:38.2576900Z             },
2026-06-21T01:51:38.2576976Z             {
2026-06-21T01:51:38.2577110Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:51:38.2577243Z               "line": 816
2026-06-21T01:51:38.2577368Z             },
2026-06-21T01:51:38.2577481Z             {
2026-06-21T01:51:38.2577602Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:51:38.2577701Z               "line": 869
2026-06-21T01:51:38.2577782Z             },
2026-06-21T01:51:38.2577868Z             {
2026-06-21T01:51:38.2578002Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:51:38.2578088Z               "line": 891
2026-06-21T01:51:38.2578183Z             },
2026-06-21T01:51:38.2578265Z             {
2026-06-21T01:51:38.2578377Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2578473Z               "line": 122
2026-06-21T01:51:38.2578551Z             },
2026-06-21T01:51:38.2578632Z             {
2026-06-21T01:51:38.2578755Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:51:38.2578847Z               "line": 44
2026-06-21T01:51:38.2579040Z             },
2026-06-21T01:51:38.2579130Z             {
2026-06-21T01:51:38.2579245Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:51:38.2579329Z               "line": 184
2026-06-21T01:51:38.2579419Z             },
2026-06-21T01:51:38.2579491Z             {
2026-06-21T01:51:38.2579606Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:51:38.2579695Z               "line": 211
2026-06-21T01:51:38.2579781Z             },
2026-06-21T01:51:38.2579873Z             {
2026-06-21T01:51:38.2579982Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:51:38.2580082Z               "line": 251
2026-06-21T01:51:38.2580169Z             },
2026-06-21T01:51:38.2580244Z             {
2026-06-21T01:51:38.2580358Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:51:38.2580449Z               "line": 275
2026-06-21T01:51:38.2580654Z             },
2026-06-21T01:51:38.2580740Z             {
2026-06-21T01:51:38.2580959Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:51:38.2581031Z               "line": 289
2026-06-21T01:51:38.2581118Z             },
2026-06-21T01:51:38.2581193Z             {
2026-06-21T01:51:38.2581312Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:51:38.2581394Z               "line": 300
2026-06-21T01:51:38.2581481Z             },
2026-06-21T01:51:38.2581574Z             {
2026-06-21T01:51:38.2581682Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:51:38.2581774Z               "line": 313
2026-06-21T01:51:38.2581858Z             }
2026-06-21T01:51:38.2581943Z           ]
2026-06-21T01:51:38.2582033Z         },
2026-06-21T01:51:38.2582105Z         "int": {
2026-06-21T01:51:38.2582192Z           "complete": true,
2026-06-21T01:51:38.2582276Z           "evidence": [
2026-06-21T01:51:38.2582367Z             {
2026-06-21T01:51:38.2582492Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T01:51:38.2582591Z               "line": 116
2026-06-21T01:51:38.2582677Z             },
2026-06-21T01:51:38.2582750Z             {
2026-06-21T01:51:38.2582878Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T01:51:38.2582958Z               "line": 181
2026-06-21T01:51:38.2583041Z             }
2026-06-21T01:51:38.2583121Z           ]
2026-06-21T01:51:38.2583207Z         },
2026-06-21T01:51:38.2583292Z         "unit": {
2026-06-21T01:51:38.2583380Z           "complete": true,
2026-06-21T01:51:38.2583464Z           "evidence": [
2026-06-21T01:51:38.2583550Z             {
2026-06-21T01:51:38.2583680Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:51:38.2583764Z               "line": 999
2026-06-21T01:51:38.2583836Z             },
2026-06-21T01:51:38.2583922Z             {
2026-06-21T01:51:38.2584042Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:51:38.2584136Z               "line": 1016
2026-06-21T01:51:38.2584222Z             },
2026-06-21T01:51:38.2584299Z             {
2026-06-21T01:51:38.2584422Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:51:38.2584517Z               "line": 1024
2026-06-21T01:51:38.2584607Z             },
2026-06-21T01:51:38.2584689Z             {
2026-06-21T01:51:38.2584813Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:51:38.2584898Z               "line": 1048
2026-06-21T01:51:38.2584985Z             },
2026-06-21T01:51:38.2585075Z             {
2026-06-21T01:51:38.2585203Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:51:38.2585295Z               "line": 1499
2026-06-21T01:51:38.2585385Z             },
2026-06-21T01:51:38.2585465Z             {
2026-06-21T01:51:38.2585580Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:51:38.2585676Z               "line": 347
2026-06-21T01:51:38.2585762Z             },
2026-06-21T01:51:38.2585842Z             {
2026-06-21T01:51:38.2585967Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:51:38.2586057Z               "line": 370
2026-06-21T01:51:38.2590269Z             },
2026-06-21T01:51:38.2590375Z             {
2026-06-21T01:51:38.2590514Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:51:38.2590608Z               "line": 407
2026-06-21T01:51:38.2590695Z             },
2026-06-21T01:51:38.2590781Z             {
2026-06-21T01:51:38.2590899Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:51:38.2590985Z               "line": 431
2026-06-21T01:51:38.2591058Z             },
2026-06-21T01:51:38.2591143Z             {
2026-06-21T01:51:38.2591262Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:51:38.2591353Z               "line": 483
2026-06-21T01:51:38.2591439Z             },
2026-06-21T01:51:38.2591524Z             {
2026-06-21T01:51:38.2591644Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:51:38.2591891Z               "line": 499
2026-06-21T01:51:38.2591979Z             },
2026-06-21T01:51:38.2592162Z             {
2026-06-21T01:51:38.2592276Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:51:38.2592372Z               "line": 514
2026-06-21T01:51:38.2592456Z             },
2026-06-21T01:51:38.2592541Z             {
2026-06-21T01:51:38.2592656Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:51:38.2592738Z               "line": 531
2026-06-21T01:51:38.2592827Z             }
2026-06-21T01:51:38.2592898Z           ]
2026-06-21T01:51:38.2592981Z         }
2026-06-21T01:51:38.2593066Z       }
2026-06-21T01:51:38.2593189Z     },
2026-06-21T01:51:38.2593310Z     {
2026-06-21T01:51:38.2593419Z       "id": "REQ-MESH-3",
2026-06-21T01:51:38.2595225Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-21T01:51:38.2595335Z       "requiredStages": [
2026-06-21T01:51:38.2595420Z         "impl",
2026-06-21T01:51:38.2595501Z         "unit",
2026-06-21T01:51:38.2595583Z         "int"
2026-06-21T01:51:38.2595664Z       ],
2026-06-21T01:51:38.2595753Z       "stages": {
2026-06-21T01:51:38.2595841Z         "doc": {
2026-06-21T01:51:38.2595936Z           "complete": false,
2026-06-21T01:51:38.2596025Z           "evidence": []
2026-06-21T01:51:38.2596117Z         },
2026-06-21T01:51:38.2596198Z         "impl": {
2026-06-21T01:51:38.2596288Z           "complete": true,
2026-06-21T01:51:38.2596378Z           "evidence": [
2026-06-21T01:51:38.2596475Z             {
2026-06-21T01:51:38.2596603Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.2596703Z               "line": 641
2026-06-21T01:51:38.2596790Z             }
2026-06-21T01:51:38.2596870Z           ]
2026-06-21T01:51:38.2596960Z         },
2026-06-21T01:51:38.2597041Z         "int": {
2026-06-21T01:51:38.2597138Z           "complete": true,
2026-06-21T01:51:38.2597227Z           "evidence": [
2026-06-21T01:51:38.2597317Z             {
2026-06-21T01:51:38.2597446Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T01:51:38.2597531Z               "line": 373
2026-06-21T01:51:38.2597620Z             },
2026-06-21T01:51:38.2597700Z             {
2026-06-21T01:51:38.2597821Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T01:51:38.2597916Z               "line": 436
2026-06-21T01:51:38.2598001Z             }
2026-06-21T01:51:38.2598092Z           ]
2026-06-21T01:51:38.2598174Z         },
2026-06-21T01:51:38.2598268Z         "unit": {
2026-06-21T01:51:38.2598354Z           "complete": true,
2026-06-21T01:51:38.2598445Z           "evidence": [
2026-06-21T01:51:38.2598531Z             {
2026-06-21T01:51:38.2598659Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.2598750Z               "line": 910
2026-06-21T01:51:38.2598841Z             }
2026-06-21T01:51:38.2598926Z           ]
2026-06-21T01:51:38.2599117Z         }
2026-06-21T01:51:38.2599208Z       }
2026-06-21T01:51:38.2599288Z     },
2026-06-21T01:51:38.2599376Z     {
2026-06-21T01:51:38.2599475Z       "id": "REQ-MESH-4",
2026-06-21T01:51:38.2601646Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-21T01:51:38.2602004Z       "requiredStages": [
2026-06-21T01:51:38.2602099Z         "impl",
2026-06-21T01:51:38.2602180Z         "unit",
2026-06-21T01:51:38.2602266Z         "int"
2026-06-21T01:51:38.2602347Z       ],
2026-06-21T01:51:38.2602428Z       "stages": {
2026-06-21T01:51:38.2602509Z         "doc": {
2026-06-21T01:51:38.2602615Z           "complete": false,
2026-06-21T01:51:38.2602708Z           "evidence": []
2026-06-21T01:51:38.2602794Z         },
2026-06-21T01:51:38.2602879Z         "impl": {
2026-06-21T01:51:38.2602970Z           "complete": true,
2026-06-21T01:51:38.2603063Z           "evidence": [
2026-06-21T01:51:38.2603139Z             {
2026-06-21T01:51:38.2603293Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T01:51:38.2603387Z               "line": 33
2026-06-21T01:51:38.2603473Z             },
2026-06-21T01:51:38.2603555Z             {
2026-06-21T01:51:38.2603674Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:51:38.2603769Z               "line": 68
2026-06-21T01:51:38.2603851Z             },
2026-06-21T01:51:38.2603936Z             {
2026-06-21T01:51:38.2604059Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:51:38.2604146Z               "line": 111
2026-06-21T01:51:38.2604227Z             },
2026-06-21T01:51:38.2604308Z             {
2026-06-21T01:51:38.2604431Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:51:38.2604519Z               "line": 462
2026-06-21T01:51:38.2604589Z             },
2026-06-21T01:51:38.2604679Z             {
2026-06-21T01:51:38.2604785Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:51:38.2604876Z               "line": 711
2026-06-21T01:51:38.2604961Z             },
2026-06-21T01:51:38.2605052Z             {
2026-06-21T01:51:38.2605172Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:51:38.2605261Z               "line": 725
2026-06-21T01:51:38.2605357Z             },
2026-06-21T01:51:38.2605439Z             {
2026-06-21T01:51:38.2605561Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.2605647Z               "line": 132
2026-06-21T01:51:38.2605723Z             },
2026-06-21T01:51:38.2605809Z             {
2026-06-21T01:51:38.2605933Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T01:51:38.2606018Z               "line": 26
2026-06-21T01:51:38.2606100Z             },
2026-06-21T01:51:38.2606196Z             {
2026-06-21T01:51:38.2606309Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T01:51:38.2606406Z               "line": 97
2026-06-21T01:51:38.2606486Z             },
2026-06-21T01:51:38.2606576Z             {
2026-06-21T01:51:38.2606686Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T01:51:38.2606772Z               "line": 119
2026-06-21T01:51:38.2606863Z             },
2026-06-21T01:51:38.2606943Z             {
2026-06-21T01:51:38.2607064Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.2607158Z               "line": 82
2026-06-21T01:51:38.2607239Z             },
2026-06-21T01:51:38.2607331Z             {
2026-06-21T01:51:38.2607445Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.2607539Z               "line": 111
2026-06-21T01:51:38.2607621Z             },
2026-06-21T01:51:38.2607713Z             {
2026-06-21T01:51:38.2607835Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.2607920Z               "line": 232
2026-06-21T01:51:38.2608001Z             },
2026-06-21T01:51:38.2608077Z             {
2026-06-21T01:51:38.2608194Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.2608366Z               "line": 245
2026-06-21T01:51:38.2608452Z             },
2026-06-21T01:51:38.2608618Z             {
2026-06-21T01:51:38.2608724Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2608809Z               "line": 4665
2026-06-21T01:51:38.2608890Z             }
2026-06-21T01:51:38.2609077Z           ]
2026-06-21T01:51:38.2609148Z         },
2026-06-21T01:51:38.2609243Z         "int": {
2026-06-21T01:51:38.2609348Z           "complete": true,
2026-06-21T01:51:38.2609429Z           "evidence": [
2026-06-21T01:51:38.2609514Z             {
2026-06-21T01:51:38.2609626Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T01:51:38.2609720Z               "line": 98
2026-06-21T01:51:38.2609801Z             },
2026-06-21T01:51:38.2609878Z             {
2026-06-21T01:51:38.2610011Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T01:51:38.2610092Z               "line": 140
2026-06-21T01:51:38.2610178Z             }
2026-06-21T01:51:38.2610269Z           ]
2026-06-21T01:51:38.2610354Z         },
2026-06-21T01:51:38.2610436Z         "unit": {
2026-06-21T01:51:38.2610541Z           "complete": true,
2026-06-21T01:51:38.2610627Z           "evidence": [
2026-06-21T01:51:38.2610712Z             {
2026-06-21T01:51:38.2610839Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T01:51:38.2610925Z               "line": 178
2026-06-21T01:51:38.2611009Z             },
2026-06-21T01:51:38.2611089Z             {
2026-06-21T01:51:38.2611219Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T01:51:38.2611305Z               "line": 242
2026-06-21T01:51:38.2611390Z             },
2026-06-21T01:51:38.2611476Z             {
2026-06-21T01:51:38.2611596Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:51:38.2611691Z               "line": 1079
2026-06-21T01:51:38.2611776Z             },
2026-06-21T01:51:38.2611853Z             {
2026-06-21T01:51:38.2611973Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:51:38.2612057Z               "line": 1109
2026-06-21T01:51:38.2612139Z             },
2026-06-21T01:51:38.2612230Z             {
2026-06-21T01:51:38.2612354Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:51:38.2612444Z               "line": 1129
2026-06-21T01:51:38.2612521Z             },
2026-06-21T01:51:38.2612606Z             {
2026-06-21T01:51:38.2612769Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:51:38.2612893Z               "line": 602
2026-06-21T01:51:38.2613002Z             },
2026-06-21T01:51:38.2613084Z             {
2026-06-21T01:51:38.2613213Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T01:51:38.2613325Z               "line": 148
2026-06-21T01:51:38.2613449Z             },
2026-06-21T01:51:38.2613539Z             {
2026-06-21T01:51:38.2613656Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T01:51:38.2613743Z               "line": 169
2026-06-21T01:51:38.2613838Z             },
2026-06-21T01:51:38.2613924Z             {
2026-06-21T01:51:38.2614028Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T01:51:38.2614120Z               "line": 181
2026-06-21T01:51:38.2614191Z             },
2026-06-21T01:51:38.2614271Z             {
2026-06-21T01:51:38.2614392Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T01:51:38.2614482Z               "line": 202
2026-06-21T01:51:38.2614568Z             },
2026-06-21T01:51:38.2614648Z             {
2026-06-21T01:51:38.2614764Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.2614839Z               "line": 375
2026-06-21T01:51:38.2614934Z             },
2026-06-21T01:51:38.2615011Z             {
2026-06-21T01:51:38.2615130Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.2615225Z               "line": 407
2026-06-21T01:51:38.2615306Z             },
2026-06-21T01:51:38.2615393Z             {
2026-06-21T01:51:38.2615617Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2615713Z               "line": 10052
2026-06-21T01:51:38.2615883Z             }
2026-06-21T01:51:38.2615971Z           ]
2026-06-21T01:51:38.2616061Z         }
2026-06-21T01:51:38.2616149Z       }
2026-06-21T01:51:38.2616226Z     },
2026-06-21T01:51:38.2616312Z     {
2026-06-21T01:51:38.2616398Z       "id": "REQ-MESH-5",
2026-06-21T01:51:38.2617823Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-21T01:51:38.2617929Z       "requiredStages": [
2026-06-21T01:51:38.2618009Z         "impl",
2026-06-21T01:51:38.2618095Z         "unit"
2026-06-21T01:51:38.2618181Z       ],
2026-06-21T01:51:38.2618273Z       "stages": {
2026-06-21T01:51:38.2618361Z         "doc": {
2026-06-21T01:51:38.2618451Z           "complete": false,
2026-06-21T01:51:38.2618537Z           "evidence": []
2026-06-21T01:51:38.2618623Z         },
2026-06-21T01:51:38.2618711Z         "impl": {
2026-06-21T01:51:38.2618811Z           "complete": true,
2026-06-21T01:51:38.2618907Z           "evidence": [
2026-06-21T01:51:38.2619111Z             {
2026-06-21T01:51:38.2619246Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:51:38.2619336Z               "line": 61
2026-06-21T01:51:38.2619417Z             },
2026-06-21T01:51:38.2619498Z             {
2026-06-21T01:51:38.2619637Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:51:38.2619722Z               "line": 109
2026-06-21T01:51:38.2619804Z             },
2026-06-21T01:51:38.2619885Z             {
2026-06-21T01:51:38.2620008Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.2620099Z               "line": 104
2026-06-21T01:51:38.2620186Z             },
2026-06-21T01:51:38.2620271Z             {
2026-06-21T01:51:38.2620404Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:51:38.2620496Z               "line": 105
2026-06-21T01:51:38.2620585Z             },
2026-06-21T01:51:38.2620662Z             {
2026-06-21T01:51:38.2620796Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2620881Z               "line": 85
2026-06-21T01:51:38.2620971Z             },
2026-06-21T01:51:38.2621058Z             {
2026-06-21T01:51:38.2621173Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2621267Z               "line": 250
2026-06-21T01:51:38.2621347Z             },
2026-06-21T01:51:38.2621438Z             {
2026-06-21T01:51:38.2621555Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2621645Z               "line": 314
2026-06-21T01:51:38.2621741Z             },
2026-06-21T01:51:38.2621818Z             {
2026-06-21T01:51:38.2621946Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2622031Z               "line": 767
2026-06-21T01:51:38.2622113Z             },
2026-06-21T01:51:38.2622199Z             {
2026-06-21T01:51:38.2622317Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:51:38.2622409Z               "line": 101
2026-06-21T01:51:38.2622485Z             },
2026-06-21T01:51:38.2622575Z             {
2026-06-21T01:51:38.2622690Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:51:38.2622790Z               "line": 193
2026-06-21T01:51:38.2622861Z             }
2026-06-21T01:51:38.2622951Z           ]
2026-06-21T01:51:38.2623034Z         },
2026-06-21T01:51:38.2623105Z         "int": {
2026-06-21T01:51:38.2623204Z           "complete": false,
2026-06-21T01:51:38.2623290Z           "evidence": []
2026-06-21T01:51:38.2623387Z         },
2026-06-21T01:51:38.2623590Z         "unit": {
2026-06-21T01:51:38.2623688Z           "complete": true,
2026-06-21T01:51:38.2623777Z           "evidence": [
2026-06-21T01:51:38.2623947Z             {
2026-06-21T01:51:38.2624085Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2624169Z               "line": 1009
2026-06-21T01:51:38.2624259Z             },
2026-06-21T01:51:38.2624341Z             {
2026-06-21T01:51:38.2624456Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:51:38.2624550Z               "line": 462
2026-06-21T01:51:38.2624637Z             }
2026-06-21T01:51:38.2624728Z           ]
2026-06-21T01:51:38.2624808Z         }
2026-06-21T01:51:38.2624903Z       }
2026-06-21T01:51:38.2624985Z     },
2026-06-21T01:51:38.2625070Z     {
2026-06-21T01:51:38.2625161Z       "id": "REQ-MESH-6",
2026-06-21T01:51:38.2626415Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-21T01:51:38.2626531Z       "requiredStages": [
2026-06-21T01:51:38.2626621Z         "impl",
2026-06-21T01:51:38.2626705Z         "unit"
2026-06-21T01:51:38.2626790Z       ],
2026-06-21T01:51:38.2626877Z       "stages": {
2026-06-21T01:51:38.2626968Z         "doc": {
2026-06-21T01:51:38.2627067Z           "complete": false,
2026-06-21T01:51:38.2627167Z           "evidence": []
2026-06-21T01:51:38.2627259Z         },
2026-06-21T01:51:38.2627331Z         "impl": {
2026-06-21T01:51:38.2627424Z           "complete": true,
2026-06-21T01:51:38.2627511Z           "evidence": [
2026-06-21T01:51:38.2627597Z             {
2026-06-21T01:51:38.2627706Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2627792Z               "line": 4181
2026-06-21T01:51:38.2627888Z             }
2026-06-21T01:51:38.2627968Z           ]
2026-06-21T01:51:38.2628058Z         },
2026-06-21T01:51:38.2628146Z         "int": {
2026-06-21T01:51:38.2628259Z           "complete": false,
2026-06-21T01:51:38.2628340Z           "evidence": []
2026-06-21T01:51:38.2628436Z         },
2026-06-21T01:51:38.2628518Z         "unit": {
2026-06-21T01:51:38.2628616Z           "complete": true,
2026-06-21T01:51:38.2628712Z           "evidence": [
2026-06-21T01:51:38.2628794Z             {
2026-06-21T01:51:38.2628903Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2629338Z               "line": 10602
2026-06-21T01:51:38.2629463Z             },
2026-06-21T01:51:38.2629582Z             {
2026-06-21T01:51:38.2629748Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2629892Z               "line": 10629
2026-06-21T01:51:38.2630015Z             },
2026-06-21T01:51:38.2630112Z             {
2026-06-21T01:51:38.2630221Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2630320Z               "line": 10653
2026-06-21T01:51:38.2630412Z             }
2026-06-21T01:51:38.2630492Z           ]
2026-06-21T01:51:38.2630583Z         }
2026-06-21T01:51:38.2630664Z       }
2026-06-21T01:51:38.2630746Z     },
2026-06-21T01:51:38.2630826Z     {
2026-06-21T01:51:38.2630926Z       "id": "REQ-MIGRATE-1",
2026-06-21T01:51:38.2631094Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-21T01:51:38.2631188Z       "requiredStages": [],
2026-06-21T01:51:38.2631279Z       "stages": {
2026-06-21T01:51:38.2631361Z         "doc": {
2026-06-21T01:51:38.2631460Z           "complete": false,
2026-06-21T01:51:38.2631546Z           "evidence": []
2026-06-21T01:51:38.2631633Z         },
2026-06-21T01:51:38.2631715Z         "impl": {
2026-06-21T01:51:38.2631803Z           "complete": false,
2026-06-21T01:51:38.2631893Z           "evidence": []
2026-06-21T01:51:38.2631974Z         },
2026-06-21T01:51:38.2632074Z         "int": {
2026-06-21T01:51:38.2632296Z           "complete": false,
2026-06-21T01:51:38.2632392Z           "evidence": []
2026-06-21T01:51:38.2632655Z         },
2026-06-21T01:51:38.2632745Z         "unit": {
2026-06-21T01:51:38.2632830Z           "complete": false,
2026-06-21T01:51:38.2632916Z           "evidence": []
2026-06-21T01:51:38.2633002Z         }
2026-06-21T01:51:38.2633083Z       }
2026-06-21T01:51:38.2633178Z     },
2026-06-21T01:51:38.2633259Z     {
2026-06-21T01:51:38.2633360Z       "id": "REQ-MSG-1",
2026-06-21T01:51:38.2633793Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-21T01:51:38.2633889Z       "requiredStages": [
2026-06-21T01:51:38.2633970Z         "impl",
2026-06-21T01:51:38.2634055Z         "unit",
2026-06-21T01:51:38.2634146Z         "int"
2026-06-21T01:51:38.2634228Z       ],
2026-06-21T01:51:38.2634309Z       "stages": {
2026-06-21T01:51:38.2634394Z         "doc": {
2026-06-21T01:51:38.2634483Z           "complete": false,
2026-06-21T01:51:38.2634584Z           "evidence": []
2026-06-21T01:51:38.2634668Z         },
2026-06-21T01:51:38.2634748Z         "impl": {
2026-06-21T01:51:38.2634848Z           "complete": true,
2026-06-21T01:51:38.2634940Z           "evidence": [
2026-06-21T01:51:38.2635030Z             {
2026-06-21T01:51:38.2635134Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:51:38.2635221Z               "line": 28
2026-06-21T01:51:38.2635297Z             },
2026-06-21T01:51:38.2635387Z             {
2026-06-21T01:51:38.2635512Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:51:38.2635583Z               "line": 94
2026-06-21T01:51:38.2635669Z             },
2026-06-21T01:51:38.2635749Z             {
2026-06-21T01:51:38.2635865Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:51:38.2635955Z               "line": 127
2026-06-21T01:51:38.2636036Z             },
2026-06-21T01:51:38.2636126Z             {
2026-06-21T01:51:38.2636227Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:51:38.2636308Z               "line": 149
2026-06-21T01:51:38.2636398Z             },
2026-06-21T01:51:38.2636495Z             {
2026-06-21T01:51:38.2636608Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:51:38.2636703Z               "line": 174
2026-06-21T01:51:38.2636791Z             },
2026-06-21T01:51:38.2636876Z             {
2026-06-21T01:51:38.2636995Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T01:51:38.2637081Z               "line": 18
2026-06-21T01:51:38.2637172Z             },
2026-06-21T01:51:38.2637256Z             {
2026-06-21T01:51:38.2637374Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T01:51:38.2637460Z               "line": 13
2026-06-21T01:51:38.2637538Z             },
2026-06-21T01:51:38.2637622Z             {
2026-06-21T01:51:38.2637727Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T01:51:38.2637819Z               "line": 62
2026-06-21T01:51:38.2637900Z             },
2026-06-21T01:51:38.2637984Z             {
2026-06-21T01:51:38.2638095Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T01:51:38.2638181Z               "line": 13
2026-06-21T01:51:38.2638262Z             }
2026-06-21T01:51:38.2638343Z           ]
2026-06-21T01:51:38.2638429Z         },
2026-06-21T01:51:38.2638505Z         "int": {
2026-06-21T01:51:38.2638600Z           "complete": true,
2026-06-21T01:51:38.2638691Z           "evidence": [
2026-06-21T01:51:38.2638768Z             {
2026-06-21T01:51:38.2638901Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T01:51:38.2639073Z               "line": 9
2026-06-21T01:51:38.2639158Z             },
2026-06-21T01:51:38.2639239Z             {
2026-06-21T01:51:38.2639374Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T01:51:38.2639473Z               "line": 56
2026-06-21T01:51:38.2639553Z             },
2026-06-21T01:51:38.2639748Z             {
2026-06-21T01:51:38.2639870Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T01:51:38.2640061Z               "line": 113
2026-06-21T01:51:38.2640147Z             }
2026-06-21T01:51:38.2640237Z           ]
2026-06-21T01:51:38.2640323Z         },
2026-06-21T01:51:38.2640400Z         "unit": {
2026-06-21T01:51:38.2640494Z           "complete": true,
2026-06-21T01:51:38.2640584Z           "evidence": [
2026-06-21T01:51:38.2640667Z             {
2026-06-21T01:51:38.2640772Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:51:38.2640866Z               "line": 203
2026-06-21T01:51:38.2640963Z             },
2026-06-21T01:51:38.2641043Z             {
2026-06-21T01:51:38.2641157Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:51:38.2641238Z               "line": 232
2026-06-21T01:51:38.2641330Z             },
2026-06-21T01:51:38.2641410Z             {
2026-06-21T01:51:38.2641515Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:51:38.2641621Z               "line": 277
2026-06-21T01:51:38.2641696Z             },
2026-06-21T01:51:38.2641787Z             {
2026-06-21T01:51:38.2641898Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:51:38.2641992Z               "line": 300
2026-06-21T01:51:38.2642077Z             },
2026-06-21T01:51:38.2642159Z             {
2026-06-21T01:51:38.2642270Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:51:38.2642354Z               "line": 325
2026-06-21T01:51:38.2642439Z             },
2026-06-21T01:51:38.2642520Z             {
2026-06-21T01:51:38.2642634Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T01:51:38.2642718Z               "line": 204
2026-06-21T01:51:38.2642803Z             },
2026-06-21T01:51:38.2642885Z             {
2026-06-21T01:51:38.2642995Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T01:51:38.2643080Z               "line": 237
2026-06-21T01:51:38.2643166Z             },
2026-06-21T01:51:38.2643252Z             {
2026-06-21T01:51:38.2643375Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T01:51:38.2643461Z               "line": 251
2026-06-21T01:51:38.2643549Z             },
2026-06-21T01:51:38.2643629Z             {
2026-06-21T01:51:38.2643738Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T01:51:38.2643829Z               "line": 263
2026-06-21T01:51:38.2643915Z             },
2026-06-21T01:51:38.2644001Z             {
2026-06-21T01:51:38.2644096Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T01:51:38.2644183Z               "line": 162
2026-06-21T01:51:38.2644258Z             },
2026-06-21T01:51:38.2644344Z             {
2026-06-21T01:51:38.2644450Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T01:51:38.2644531Z               "line": 242
2026-06-21T01:51:38.2644630Z             },
2026-06-21T01:51:38.2644716Z             {
2026-06-21T01:51:38.2644827Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T01:51:38.2644916Z               "line": 134
2026-06-21T01:51:38.2645005Z             },
2026-06-21T01:51:38.2645096Z             {
2026-06-21T01:51:38.2645210Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T01:51:38.2645304Z               "line": 153
2026-06-21T01:51:38.2645389Z             }
2026-06-21T01:51:38.2645471Z           ]
2026-06-21T01:51:38.2645557Z         }
2026-06-21T01:51:38.2645647Z       }
2026-06-21T01:51:38.2645728Z     },
2026-06-21T01:51:38.2645815Z     {
2026-06-21T01:51:38.2645914Z       "id": "REQ-MSG-2",
2026-06-21T01:51:38.2646162Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-21T01:51:38.2646267Z       "requiredStages": [
2026-06-21T01:51:38.2646348Z         "impl",
2026-06-21T01:51:38.2646439Z         "unit"
2026-06-21T01:51:38.2646520Z       ],
2026-06-21T01:51:38.2646610Z       "stages": {
2026-06-21T01:51:38.2646701Z         "doc": {
2026-06-21T01:51:38.2646792Z           "complete": false,
2026-06-21T01:51:38.2646972Z           "evidence": []
2026-06-21T01:51:38.2647060Z         },
2026-06-21T01:51:38.2647254Z         "impl": {
2026-06-21T01:51:38.2647388Z           "complete": true,
2026-06-21T01:51:38.2647520Z           "evidence": [
2026-06-21T01:51:38.2647607Z             {
2026-06-21T01:51:38.2647717Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2647825Z               "line": 11
2026-06-21T01:51:38.2647920Z             },
2026-06-21T01:51:38.2648011Z             {
2026-06-21T01:51:38.2648122Z               "path": "crates/spt/src/main.rs",
2026-06-21T01:51:38.2648215Z               "line": 8
2026-06-21T01:51:38.2648302Z             }
2026-06-21T01:51:38.2648384Z           ]
2026-06-21T01:51:38.2648474Z         },
2026-06-21T01:51:38.2648559Z         "int": {
2026-06-21T01:51:38.2648660Z           "complete": false,
2026-06-21T01:51:38.2648746Z           "evidence": []
2026-06-21T01:51:38.2648841Z         },
2026-06-21T01:51:38.2648931Z         "unit": {
2026-06-21T01:51:38.2649141Z           "complete": true,
2026-06-21T01:51:38.2649227Z           "evidence": [
2026-06-21T01:51:38.2649319Z             {
2026-06-21T01:51:38.2649422Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2649508Z               "line": 7717
2026-06-21T01:51:38.2649596Z             },
2026-06-21T01:51:38.2649686Z             {
2026-06-21T01:51:38.2649780Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2649866Z               "line": 7759
2026-06-21T01:51:38.2649953Z             },
2026-06-21T01:51:38.2650042Z             {
2026-06-21T01:51:38.2650142Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2650232Z               "line": 7808
2026-06-21T01:51:38.2650313Z             },
2026-06-21T01:51:38.2650388Z             {
2026-06-21T01:51:38.2650487Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2650578Z               "line": 7831
2026-06-21T01:51:38.2650670Z             },
2026-06-21T01:51:38.2650754Z             {
2026-06-21T01:51:38.2650859Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2650955Z               "line": 9807
2026-06-21T01:51:38.2651045Z             },
2026-06-21T01:51:38.2651126Z             {
2026-06-21T01:51:38.2651232Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2651327Z               "line": 9816
2026-06-21T01:51:38.2651407Z             },
2026-06-21T01:51:38.2651499Z             {
2026-06-21T01:51:38.2651603Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2651694Z               "line": 9830
2026-06-21T01:51:38.2651784Z             }
2026-06-21T01:51:38.2651861Z           ]
2026-06-21T01:51:38.2651951Z         }
2026-06-21T01:51:38.2652027Z       }
2026-06-21T01:51:38.2652118Z     },
2026-06-21T01:51:38.2652205Z     {
2026-06-21T01:51:38.2652294Z       "id": "REQ-MSG-3",
2026-06-21T01:51:38.2652676Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-21T01:51:38.2652777Z       "requiredStages": [
2026-06-21T01:51:38.2652863Z         "impl",
2026-06-21T01:51:38.2652956Z         "unit",
2026-06-21T01:51:38.2653046Z         "int"
2026-06-21T01:51:38.2653137Z       ],
2026-06-21T01:51:38.2653222Z       "stages": {
2026-06-21T01:51:38.2653311Z         "doc": {
2026-06-21T01:51:38.2653407Z           "complete": false,
2026-06-21T01:51:38.2653503Z           "evidence": []
2026-06-21T01:51:38.2653593Z         },
2026-06-21T01:51:38.2653678Z         "impl": {
2026-06-21T01:51:38.2653775Z           "complete": true,
2026-06-21T01:51:38.2653860Z           "evidence": [
2026-06-21T01:51:38.2653950Z             {
2026-06-21T01:51:38.2654065Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T01:51:38.2654165Z               "line": 19
2026-06-21T01:51:38.2654250Z             },
2026-06-21T01:51:38.2654336Z             {
2026-06-21T01:51:38.2654443Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:51:38.2654527Z               "line": 21
2026-06-21T01:51:38.2654734Z             },
2026-06-21T01:51:38.2654818Z             {
2026-06-21T01:51:38.2655058Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:51:38.2655147Z               "line": 48
2026-06-21T01:51:38.2655228Z             },
2026-06-21T01:51:38.2655310Z             {
2026-06-21T01:51:38.2655415Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:51:38.2655509Z               "line": 174
2026-06-21T01:51:38.2655594Z             }
2026-06-21T01:51:38.2655685Z           ]
2026-06-21T01:51:38.2655774Z         },
2026-06-21T01:51:38.2655859Z         "int": {
2026-06-21T01:51:38.2655959Z           "complete": true,
2026-06-21T01:51:38.2656050Z           "evidence": [
2026-06-21T01:51:38.2656136Z             {
2026-06-21T01:51:38.2656274Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T01:51:38.2656370Z               "line": 10
2026-06-21T01:51:38.2656456Z             },
2026-06-21T01:51:38.2656541Z             {
2026-06-21T01:51:38.2656684Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T01:51:38.2656775Z               "line": 56
2026-06-21T01:51:38.2656865Z             }
2026-06-21T01:51:38.2656952Z           ]
2026-06-21T01:51:38.2657042Z         },
2026-06-21T01:51:38.2657142Z         "unit": {
2026-06-21T01:51:38.2657237Z           "complete": true,
2026-06-21T01:51:38.2657328Z           "evidence": [
2026-06-21T01:51:38.2657414Z             {
2026-06-21T01:51:38.2657528Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:51:38.2657615Z               "line": 228
2026-06-21T01:51:38.2657704Z             },
2026-06-21T01:51:38.2657795Z             {
2026-06-21T01:51:38.2657906Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:51:38.2657982Z               "line": 247
2026-06-21T01:51:38.2658057Z             },
2026-06-21T01:51:38.2658143Z             {
2026-06-21T01:51:38.2658254Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:51:38.2658348Z               "line": 270
2026-06-21T01:51:38.2658438Z             }
2026-06-21T01:51:38.2658523Z           ]
2026-06-21T01:51:38.2658615Z         }
2026-06-21T01:51:38.2658696Z       }
2026-06-21T01:51:38.2658785Z     },
2026-06-21T01:51:38.2658877Z     {
2026-06-21T01:51:38.2659062Z       "id": "REQ-MSG-4",
2026-06-21T01:51:38.2660030Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-21T01:51:38.2660131Z       "requiredStages": [
2026-06-21T01:51:38.2660222Z         "impl",
2026-06-21T01:51:38.2660306Z         "unit",
2026-06-21T01:51:38.2660388Z         "int"
2026-06-21T01:51:38.2660480Z       ],
2026-06-21T01:51:38.2660565Z       "stages": {
2026-06-21T01:51:38.2660645Z         "doc": {
2026-06-21T01:51:38.2660740Z           "complete": false,
2026-06-21T01:51:38.2660840Z           "evidence": []
2026-06-21T01:51:38.2660915Z         },
2026-06-21T01:51:38.2660999Z         "impl": {
2026-06-21T01:51:38.2661090Z           "complete": true,
2026-06-21T01:51:38.2661172Z           "evidence": [
2026-06-21T01:51:38.2661262Z             {
2026-06-21T01:51:38.2661371Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:51:38.2661457Z               "line": 19
2026-06-21T01:51:38.2661543Z             },
2026-06-21T01:51:38.2665707Z             {
2026-06-21T01:51:38.2665865Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:51:38.2665971Z               "line": 46
2026-06-21T01:51:38.2666069Z             },
2026-06-21T01:51:38.2666149Z             {
2026-06-21T01:51:38.2666283Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.2666376Z               "line": 532
2026-06-21T01:51:38.2666467Z             },
2026-06-21T01:51:38.2666557Z             {
2026-06-21T01:51:38.2666668Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2666968Z               "line": 3110
2026-06-21T01:51:38.2667058Z             }
2026-06-21T01:51:38.2667245Z           ]
2026-06-21T01:51:38.2667326Z         },
2026-06-21T01:51:38.2667420Z         "int": {
2026-06-21T01:51:38.2667522Z           "complete": true,
2026-06-21T01:51:38.2667607Z           "evidence": [
2026-06-21T01:51:38.2667702Z             {
2026-06-21T01:51:38.2667831Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T01:51:38.2667921Z               "line": 98
2026-06-21T01:51:38.2668007Z             },
2026-06-21T01:51:38.2668093Z             {
2026-06-21T01:51:38.2668218Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T01:51:38.2668307Z               "line": 128
2026-06-21T01:51:38.2668389Z             }
2026-06-21T01:51:38.2668475Z           ]
2026-06-21T01:51:38.2668565Z         },
2026-06-21T01:51:38.2668646Z         "unit": {
2026-06-21T01:51:38.2668737Z           "complete": true,
2026-06-21T01:51:38.2668829Z           "evidence": [
2026-06-21T01:51:38.2668917Z             {
2026-06-21T01:51:38.2669127Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:51:38.2669218Z               "line": 68
2026-06-21T01:51:38.2669308Z             },
2026-06-21T01:51:38.2669393Z             {
2026-06-21T01:51:38.2669509Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:51:38.2669603Z               "line": 79
2026-06-21T01:51:38.2669684Z             },
2026-06-21T01:51:38.2669767Z             {
2026-06-21T01:51:38.2669871Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:51:38.2669961Z               "line": 90
2026-06-21T01:51:38.2670047Z             },
2026-06-21T01:51:38.2670133Z             {
2026-06-21T01:51:38.2670243Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:51:38.2670328Z               "line": 151
2026-06-21T01:51:38.2670410Z             }
2026-06-21T01:51:38.2670495Z           ]
2026-06-21T01:51:38.2670586Z         }
2026-06-21T01:51:38.2670667Z       }
2026-06-21T01:51:38.2670749Z     },
2026-06-21T01:51:38.2670838Z     {
2026-06-21T01:51:38.2670924Z       "id": "REQ-MSG-5",
2026-06-21T01:51:38.2671665Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-21T01:51:38.2671761Z       "requiredStages": [
2026-06-21T01:51:38.2671851Z         "doc",
2026-06-21T01:51:38.2671941Z         "impl",
2026-06-21T01:51:38.2672027Z         "unit"
2026-06-21T01:51:38.2672137Z       ],
2026-06-21T01:51:38.2672212Z       "stages": {
2026-06-21T01:51:38.2672304Z         "doc": {
2026-06-21T01:51:38.2672386Z           "complete": true,
2026-06-21T01:51:38.2672475Z           "evidence": [
2026-06-21T01:51:38.2672560Z             {
2026-06-21T01:51:38.2672662Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.2672752Z               "line": 231
2026-06-21T01:51:38.2672838Z             }
2026-06-21T01:51:38.2672923Z           ]
2026-06-21T01:51:38.2673010Z         },
2026-06-21T01:51:38.2673100Z         "impl": {
2026-06-21T01:51:38.2673195Z           "complete": true,
2026-06-21T01:51:38.2673282Z           "evidence": [
2026-06-21T01:51:38.2673377Z             {
2026-06-21T01:51:38.2673491Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T01:51:38.2673578Z               "line": 60
2026-06-21T01:51:38.2673664Z             },
2026-06-21T01:51:38.2673753Z             {
2026-06-21T01:51:38.2673873Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.2673964Z               "line": 126
2026-06-21T01:51:38.2674049Z             },
2026-06-21T01:51:38.2674134Z             {
2026-06-21T01:51:38.2674257Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.2674347Z               "line": 135
2026-06-21T01:51:38.2674436Z             },
2026-06-21T01:51:38.2674527Z             {
2026-06-21T01:51:38.2674741Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.2674841Z               "line": 149
2026-06-21T01:51:38.2675010Z             },
2026-06-21T01:51:38.2675103Z             {
2026-06-21T01:51:38.2675205Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.2675300Z               "line": 178
2026-06-21T01:51:38.2675385Z             },
2026-06-21T01:51:38.2675462Z             {
2026-06-21T01:51:38.2675577Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2675667Z               "line": 2802
2026-06-21T01:51:38.2675757Z             }
2026-06-21T01:51:38.2675830Z           ]
2026-06-21T01:51:38.2675916Z         },
2026-06-21T01:51:38.2676005Z         "int": {
2026-06-21T01:51:38.2676096Z           "complete": true,
2026-06-21T01:51:38.2676192Z           "evidence": [
2026-06-21T01:51:38.2676277Z             {
2026-06-21T01:51:38.2676401Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T01:51:38.2676488Z               "line": 19
2026-06-21T01:51:38.2676578Z             }
2026-06-21T01:51:38.2676662Z           ]
2026-06-21T01:51:38.2676747Z         },
2026-06-21T01:51:38.2676839Z         "unit": {
2026-06-21T01:51:38.2676932Z           "complete": true,
2026-06-21T01:51:38.2677027Z           "evidence": [
2026-06-21T01:51:38.2677108Z             {
2026-06-21T01:51:38.2677224Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T01:51:38.2677322Z               "line": 192
2026-06-21T01:51:38.2677404Z             },
2026-06-21T01:51:38.2677490Z             {
2026-06-21T01:51:38.2677613Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T01:51:38.2677708Z               "line": 154
2026-06-21T01:51:38.2677796Z             },
2026-06-21T01:51:38.2677881Z             {
2026-06-21T01:51:38.2677995Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:51:38.2678077Z               "line": 122
2026-06-21T01:51:38.2678167Z             },
2026-06-21T01:51:38.2678252Z             {
2026-06-21T01:51:38.2678367Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.2678454Z               "line": 452
2026-06-21T01:51:38.2678544Z             },
2026-06-21T01:51:38.2678629Z             {
2026-06-21T01:51:38.2678740Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.2678824Z               "line": 501
2026-06-21T01:51:38.2678910Z             },
2026-06-21T01:51:38.2679084Z             {
2026-06-21T01:51:38.2679201Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.2679292Z               "line": 517
2026-06-21T01:51:38.2679374Z             },
2026-06-21T01:51:38.2679450Z             {
2026-06-21T01:51:38.2679568Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.2679658Z               "line": 536
2026-06-21T01:51:38.2679745Z             },
2026-06-21T01:51:38.2679825Z             {
2026-06-21T01:51:38.2679934Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2680036Z               "line": 7660
2026-06-21T01:51:38.2680117Z             }
2026-06-21T01:51:38.2680206Z           ]
2026-06-21T01:51:38.2680293Z         }
2026-06-21T01:51:38.2680379Z       }
2026-06-21T01:51:38.2680464Z     },
2026-06-21T01:51:38.2680550Z     {
2026-06-21T01:51:38.2680651Z       "id": "REQ-MSG-6",
2026-06-21T01:51:38.2682297Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-21T01:51:38.2682401Z       "requiredStages": [
2026-06-21T01:51:38.2682486Z         "doc",
2026-06-21T01:51:38.2682569Z         "impl",
2026-06-21T01:51:38.2682655Z         "unit"
2026-06-21T01:51:38.2682854Z       ],
2026-06-21T01:51:38.2682950Z       "stages": {
2026-06-21T01:51:38.2683035Z         "doc": {
2026-06-21T01:51:38.2683231Z           "complete": true,
2026-06-21T01:51:38.2683326Z           "evidence": [
2026-06-21T01:51:38.2683407Z             {
2026-06-21T01:51:38.2683513Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.2683603Z               "line": 234
2026-06-21T01:51:38.2683684Z             }
2026-06-21T01:51:38.2683774Z           ]
2026-06-21T01:51:38.2683861Z         },
2026-06-21T01:51:38.2683951Z         "impl": {
2026-06-21T01:51:38.2684046Z           "complete": true,
2026-06-21T01:51:38.2684143Z           "evidence": [
2026-06-21T01:51:38.2684228Z             {
2026-06-21T01:51:38.2684371Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2684457Z               "line": 177
2026-06-21T01:51:38.2684548Z             },
2026-06-21T01:51:38.2684633Z             {
2026-06-21T01:51:38.2684760Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2684846Z               "line": 428
2026-06-21T01:51:38.2684926Z             },
2026-06-21T01:51:38.2685010Z             {
2026-06-21T01:51:38.2685140Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2685231Z               "line": 451
2026-06-21T01:51:38.2685325Z             },
2026-06-21T01:51:38.2685411Z             {
2026-06-21T01:51:38.2685522Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T01:51:38.2685612Z               "line": 89
2026-06-21T01:51:38.2685692Z             },
2026-06-21T01:51:38.2685774Z             {
2026-06-21T01:51:38.2685903Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2686002Z               "line": 155
2026-06-21T01:51:38.2686085Z             }
2026-06-21T01:51:38.2686175Z           ]
2026-06-21T01:51:38.2686256Z         },
2026-06-21T01:51:38.2686351Z         "int": {
2026-06-21T01:51:38.2686442Z           "complete": false,
2026-06-21T01:51:38.2686541Z           "evidence": []
2026-06-21T01:51:38.2686632Z         },
2026-06-21T01:51:38.2686715Z         "unit": {
2026-06-21T01:51:38.2686814Z           "complete": true,
2026-06-21T01:51:38.2686904Z           "evidence": [
2026-06-21T01:51:38.2686995Z             {
2026-06-21T01:51:38.2687120Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2687213Z               "line": 1746
2026-06-21T01:51:38.2687303Z             },
2026-06-21T01:51:38.2687384Z             {
2026-06-21T01:51:38.2687507Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T01:51:38.2687592Z               "line": 219
2026-06-21T01:51:38.2687673Z             }
2026-06-21T01:51:38.2687759Z           ]
2026-06-21T01:51:38.2687845Z         }
2026-06-21T01:51:38.2687925Z       }
2026-06-21T01:51:38.2688007Z     },
2026-06-21T01:51:38.2688093Z     {
2026-06-21T01:51:38.2688192Z       "id": "REQ-MSG-ENVELOPE",
2026-06-21T01:51:38.2692054Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-21T01:51:38.2692377Z       "requiredStages": [
2026-06-21T01:51:38.2692463Z         "doc",
2026-06-21T01:51:38.2692544Z         "impl",
2026-06-21T01:51:38.2692642Z         "unit",
2026-06-21T01:51:38.2692727Z         "int"
2026-06-21T01:51:38.2692814Z       ],
2026-06-21T01:51:38.2692905Z       "stages": {
2026-06-21T01:51:38.2692985Z         "doc": {
2026-06-21T01:51:38.2693081Z           "complete": true,
2026-06-21T01:51:38.2693162Z           "evidence": [
2026-06-21T01:51:38.2693252Z             {
2026-06-21T01:51:38.2693477Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T01:51:38.2693563Z               "line": 47
2026-06-21T01:51:38.2693653Z             }
2026-06-21T01:51:38.2693734Z           ]
2026-06-21T01:51:38.2693815Z         },
2026-06-21T01:51:38.2693901Z         "impl": {
2026-06-21T01:51:38.2694010Z           "complete": true,
2026-06-21T01:51:38.2694102Z           "evidence": [
2026-06-21T01:51:38.2694196Z             {
2026-06-21T01:51:38.2694315Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:51:38.2694403Z               "line": 20
2026-06-21T01:51:38.2694487Z             },
2026-06-21T01:51:38.2694573Z             {
2026-06-21T01:51:38.2694684Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:51:38.2694774Z               "line": 33
2026-06-21T01:51:38.2694849Z             },
2026-06-21T01:51:38.2694931Z             {
2026-06-21T01:51:38.2695037Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:51:38.2695131Z               "line": 47
2026-06-21T01:51:38.2695207Z             },
2026-06-21T01:51:38.2695296Z             {
2026-06-21T01:51:38.2695406Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:51:38.2695495Z               "line": 58
2026-06-21T01:51:38.2695580Z             },
2026-06-21T01:51:38.2695671Z             {
2026-06-21T01:51:38.2695781Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T01:51:38.2695871Z               "line": 14
2026-06-21T01:51:38.2695971Z             },
2026-06-21T01:51:38.2696058Z             {
2026-06-21T01:51:38.2696167Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T01:51:38.2696257Z               "line": 27
2026-06-21T01:51:38.2696339Z             },
2026-06-21T01:51:38.2696425Z             {
2026-06-21T01:51:38.2696529Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T01:51:38.2696630Z               "line": 40
2026-06-21T01:51:38.2696721Z             },
2026-06-21T01:51:38.2696806Z             {
2026-06-21T01:51:38.2696930Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:51:38.2697016Z               "line": 92
2026-06-21T01:51:38.2697106Z             },
2026-06-21T01:51:38.2697197Z             {
2026-06-21T01:51:38.2697312Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:51:38.2697407Z               "line": 143
2026-06-21T01:51:38.2697493Z             },
2026-06-21T01:51:38.2697580Z             {
2026-06-21T01:51:38.2697689Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:51:38.2697778Z               "line": 216
2026-06-21T01:51:38.2697854Z             },
2026-06-21T01:51:38.2697940Z             {
2026-06-21T01:51:38.2698053Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.2698132Z               "line": 533
2026-06-21T01:51:38.2698224Z             },
2026-06-21T01:51:38.2698306Z             {
2026-06-21T01:51:38.2698414Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:51:38.2698500Z               "line": 78
2026-06-21T01:51:38.2698582Z             },
2026-06-21T01:51:38.2698658Z             {
2026-06-21T01:51:38.2698766Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2698868Z               "line": 3111
2026-06-21T01:51:38.2699030Z             }
2026-06-21T01:51:38.2699129Z           ]
2026-06-21T01:51:38.2699359Z         },
2026-06-21T01:51:38.2699449Z         "int": {
2026-06-21T01:51:38.2699545Z           "complete": true,
2026-06-21T01:51:38.2699702Z           "evidence": [
2026-06-21T01:51:38.2699788Z             {
2026-06-21T01:51:38.2699922Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-21T01:51:38.2700007Z               "line": 15
2026-06-21T01:51:38.2700098Z             }
2026-06-21T01:51:38.2700175Z           ]
2026-06-21T01:51:38.2700260Z         },
2026-06-21T01:51:38.2700346Z         "unit": {
2026-06-21T01:51:38.2700432Z           "complete": true,
2026-06-21T01:51:38.2700514Z           "evidence": [
2026-06-21T01:51:38.2700603Z             {
2026-06-21T01:51:38.2700716Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:51:38.2700797Z               "line": 102
2026-06-21T01:51:38.2700884Z             },
2026-06-21T01:51:38.2700964Z             {
2026-06-21T01:51:38.2701078Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:51:38.2701156Z               "line": 137
2026-06-21T01:51:38.2701237Z             },
2026-06-21T01:51:38.2701321Z             {
2026-06-21T01:51:38.2701432Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T01:51:38.2701527Z               "line": 98
2026-06-21T01:51:38.2701608Z             },
2026-06-21T01:51:38.2701694Z             {
2026-06-21T01:51:38.2701800Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T01:51:38.2701889Z               "line": 106
2026-06-21T01:51:38.2701979Z             },
2026-06-21T01:51:38.2702057Z             {
2026-06-21T01:51:38.2702166Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T01:51:38.2702252Z               "line": 113
2026-06-21T01:51:38.2702333Z             },
2026-06-21T01:51:38.2702405Z             {
2026-06-21T01:51:38.2702514Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T01:51:38.2702609Z               "line": 122
2026-06-21T01:51:38.2702686Z             }
2026-06-21T01:51:38.2702778Z           ]
2026-06-21T01:51:38.2702861Z         }
2026-06-21T01:51:38.2702951Z       }
2026-06-21T01:51:38.2703037Z     },
2026-06-21T01:51:38.2703141Z     {
2026-06-21T01:51:38.2703264Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-21T01:51:38.2708268Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-21T01:51:38.2708399Z       "requiredStages": [
2026-06-21T01:51:38.2708481Z         "doc",
2026-06-21T01:51:38.2708660Z         "impl",
2026-06-21T01:51:38.2708740Z         "unit",
2026-06-21T01:51:38.2708827Z         "int"
2026-06-21T01:51:38.2709079Z       ],
2026-06-21T01:51:38.2709180Z       "stages": {
2026-06-21T01:51:38.2709261Z         "doc": {
2026-06-21T01:51:38.2709350Z           "complete": true,
2026-06-21T01:51:38.2709447Z           "evidence": [
2026-06-21T01:51:38.2709523Z             {
2026-06-21T01:51:38.2709675Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T01:51:38.2709762Z               "line": 277
2026-06-21T01:51:38.2709852Z             },
2026-06-21T01:51:38.2709933Z             {
2026-06-21T01:51:38.2710038Z               "path": "docs/MANIFEST.md",
2026-06-21T01:51:38.2710120Z               "line": 198
2026-06-21T01:51:38.2710205Z             }
2026-06-21T01:51:38.2710290Z           ]
2026-06-21T01:51:38.2710372Z         },
2026-06-21T01:51:38.2710458Z         "impl": {
2026-06-21T01:51:38.2710557Z           "complete": true,
2026-06-21T01:51:38.2710648Z           "evidence": [
2026-06-21T01:51:38.2710726Z             {
2026-06-21T01:51:38.2710843Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.2710934Z               "line": 977
2026-06-21T01:51:38.2711021Z             },
2026-06-21T01:51:38.2711107Z             {
2026-06-21T01:51:38.2711243Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T01:51:38.2711329Z               "line": 23
2026-06-21T01:51:38.2711411Z             },
2026-06-21T01:51:38.2711492Z             {
2026-06-21T01:51:38.2711605Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T01:51:38.2711691Z               "line": 91
2026-06-21T01:51:38.2711787Z             },
2026-06-21T01:51:38.2711863Z             {
2026-06-21T01:51:38.2711983Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T01:51:38.2712069Z               "line": 239
2026-06-21T01:51:38.2712155Z             },
2026-06-21T01:51:38.2712244Z             {
2026-06-21T01:51:38.2712369Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T01:51:38.2712454Z               "line": 287
2026-06-21T01:51:38.2712544Z             },
2026-06-21T01:51:38.2712627Z             {
2026-06-21T01:51:38.2712759Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T01:51:38.2712840Z               "line": 311
2026-06-21T01:51:38.2712917Z             },
2026-06-21T01:51:38.2712999Z             {
2026-06-21T01:51:38.2713126Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2713218Z               "line": 60
2026-06-21T01:51:38.2713295Z             },
2026-06-21T01:51:38.2713384Z             {
2026-06-21T01:51:38.2713502Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2713588Z               "line": 889
2026-06-21T01:51:38.2713674Z             }
2026-06-21T01:51:38.2713762Z           ]
2026-06-21T01:51:38.2713852Z         },
2026-06-21T01:51:38.2713929Z         "int": {
2026-06-21T01:51:38.2714016Z           "complete": true,
2026-06-21T01:51:38.2714105Z           "evidence": [
2026-06-21T01:51:38.2714191Z             {
2026-06-21T01:51:38.2714339Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T01:51:38.2714434Z               "line": 1034
2026-06-21T01:51:38.2714510Z             },
2026-06-21T01:51:38.2714593Z             {
2026-06-21T01:51:38.2714739Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T01:51:38.2714820Z               "line": 1139
2026-06-21T01:51:38.2714912Z             },
2026-06-21T01:51:38.2715002Z             {
2026-06-21T01:51:38.2715145Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T01:51:38.2715241Z               "line": 1207
2026-06-21T01:51:38.2715326Z             },
2026-06-21T01:51:38.2715417Z             {
2026-06-21T01:51:38.2715547Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T01:51:38.2715636Z               "line": 1300
2026-06-21T01:51:38.2715833Z             }
2026-06-21T01:51:38.2715918Z           ]
2026-06-21T01:51:38.2716013Z         },
2026-06-21T01:51:38.2716196Z         "unit": {
2026-06-21T01:51:38.2716293Z           "complete": true,
2026-06-21T01:51:38.2716383Z           "evidence": [
2026-06-21T01:51:38.2716479Z             {
2026-06-21T01:51:38.2716610Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:51:38.2716701Z               "line": 270
2026-06-21T01:51:38.2716791Z             },
2026-06-21T01:51:38.2716873Z             {
2026-06-21T01:51:38.2717001Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T01:51:38.2717087Z               "line": 350
2026-06-21T01:51:38.2717178Z             },
2026-06-21T01:51:38.2717268Z             {
2026-06-21T01:51:38.2717387Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T01:51:38.2717479Z               "line": 381
2026-06-21T01:51:38.2717564Z             },
2026-06-21T01:51:38.2717654Z             {
2026-06-21T01:51:38.2717765Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T01:51:38.2717864Z               "line": 411
2026-06-21T01:51:38.2717945Z             },
2026-06-21T01:51:38.2718017Z             {
2026-06-21T01:51:38.2718132Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T01:51:38.2718222Z               "line": 440
2026-06-21T01:51:38.2718313Z             },
2026-06-21T01:51:38.2718395Z             {
2026-06-21T01:51:38.2718508Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2718599Z               "line": 1181
2026-06-21T01:51:38.2718681Z             }
2026-06-21T01:51:38.2718762Z           ]
2026-06-21T01:51:38.2718837Z         }
2026-06-21T01:51:38.2718922Z       }
2026-06-21T01:51:38.2719084Z     },
2026-06-21T01:51:38.2719173Z     {
2026-06-21T01:51:38.2719267Z       "id": "REQ-NET-1",
2026-06-21T01:51:38.2719445Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-21T01:51:38.2719540Z       "requiredStages": [
2026-06-21T01:51:38.2719630Z         "impl",
2026-06-21T01:51:38.2719707Z         "unit",
2026-06-21T01:51:38.2719797Z         "int"
2026-06-21T01:51:38.2719878Z       ],
2026-06-21T01:51:38.2719964Z       "stages": {
2026-06-21T01:51:38.2720050Z         "doc": {
2026-06-21T01:51:38.2720140Z           "complete": false,
2026-06-21T01:51:38.2720230Z           "evidence": []
2026-06-21T01:51:38.2720318Z         },
2026-06-21T01:51:38.2720403Z         "impl": {
2026-06-21T01:51:38.2720498Z           "complete": true,
2026-06-21T01:51:38.2720593Z           "evidence": [
2026-06-21T01:51:38.2720685Z             {
2026-06-21T01:51:38.2720822Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:51:38.2720908Z               "line": 54
2026-06-21T01:51:38.2720990Z             },
2026-06-21T01:51:38.2721080Z             {
2026-06-21T01:51:38.2721194Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:51:38.2721281Z               "line": 594
2026-06-21T01:51:38.2721366Z             },
2026-06-21T01:51:38.2721451Z             {
2026-06-21T01:51:38.2721567Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T01:51:38.2721667Z               "line": 130
2026-06-21T01:51:38.2721751Z             },
2026-06-21T01:51:38.2721836Z             {
2026-06-21T01:51:38.2721956Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.2722038Z               "line": 97
2026-06-21T01:51:38.2722122Z             },
2026-06-21T01:51:38.2722203Z             {
2026-06-21T01:51:38.2722319Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.2722404Z               "line": 159
2026-06-21T01:51:38.2722485Z             },
2026-06-21T01:51:38.2722562Z             {
2026-06-21T01:51:38.2722676Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.2722757Z               "line": 175
2026-06-21T01:51:38.2722847Z             },
2026-06-21T01:51:38.2722929Z             {
2026-06-21T01:51:38.2723053Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.2723258Z               "line": 190
2026-06-21T01:51:38.2723463Z             },
2026-06-21T01:51:38.2723545Z             {
2026-06-21T01:51:38.2723672Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.2723753Z               "line": 271
2026-06-21T01:51:38.2723836Z             },
2026-06-21T01:51:38.2723921Z             {
2026-06-21T01:51:38.2724039Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.2724124Z               "line": 306
2026-06-21T01:51:38.2724210Z             },
2026-06-21T01:51:38.2724299Z             {
2026-06-21T01:51:38.2724422Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.2724518Z               "line": 312
2026-06-21T01:51:38.2724605Z             },
2026-06-21T01:51:38.2724689Z             {
2026-06-21T01:51:38.2724809Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.2724895Z               "line": 318
2026-06-21T01:51:38.2724985Z             },
2026-06-21T01:51:38.2725070Z             {
2026-06-21T01:51:38.2725195Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.2725286Z               "line": 334
2026-06-21T01:51:38.2725371Z             },
2026-06-21T01:51:38.2725458Z             {
2026-06-21T01:51:38.2725567Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.2725657Z               "line": 354
2026-06-21T01:51:38.2725739Z             },
2026-06-21T01:51:38.2725835Z             {
2026-06-21T01:51:38.2725957Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T01:51:38.2726039Z               "line": 35
2026-06-21T01:51:38.2726126Z             },
2026-06-21T01:51:38.2726210Z             {
2026-06-21T01:51:38.2726330Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T01:51:38.2726417Z               "line": 85
2026-06-21T01:51:38.2726511Z             },
2026-06-21T01:51:38.2726601Z             {
2026-06-21T01:51:38.2726717Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:51:38.2726807Z               "line": 138
2026-06-21T01:51:38.2726887Z             },
2026-06-21T01:51:38.2726967Z             {
2026-06-21T01:51:38.2727073Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2727162Z               "line": 2953
2026-06-21T01:51:38.2727251Z             },
2026-06-21T01:51:38.2727333Z             {
2026-06-21T01:51:38.2727443Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:51:38.2727528Z               "line": 17
2026-06-21T01:51:38.2727608Z             }
2026-06-21T01:51:38.2727706Z           ]
2026-06-21T01:51:38.2727786Z         },
2026-06-21T01:51:38.2727871Z         "int": {
2026-06-21T01:51:38.2727957Z           "complete": true,
2026-06-21T01:51:38.2728044Z           "evidence": [
2026-06-21T01:51:38.2728130Z             {
2026-06-21T01:51:38.2728262Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:51:38.2728359Z               "line": 341
2026-06-21T01:51:38.2728443Z             },
2026-06-21T01:51:38.2728529Z             {
2026-06-21T01:51:38.2728650Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.2728739Z               "line": 675
2026-06-21T01:51:38.2728820Z             },
2026-06-21T01:51:38.2728906Z             {
2026-06-21T01:51:38.2729111Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.2729202Z               "line": 973
2026-06-21T01:51:38.2729284Z             }
2026-06-21T01:51:38.2729369Z           ]
2026-06-21T01:51:38.2729458Z         },
2026-06-21T01:51:38.2729539Z         "unit": {
2026-06-21T01:51:38.2729630Z           "complete": true,
2026-06-21T01:51:38.2729728Z           "evidence": [
2026-06-21T01:51:38.2729813Z             {
2026-06-21T01:51:38.2729938Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:51:38.2730019Z               "line": 651
2026-06-21T01:51:38.2730109Z             },
2026-06-21T01:51:38.2730190Z             {
2026-06-21T01:51:38.2730423Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:51:38.2730519Z               "line": 686
2026-06-21T01:51:38.2730682Z             },
2026-06-21T01:51:38.2730772Z             {
2026-06-21T01:51:38.2730887Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:51:38.2730986Z               "line": 940
2026-06-21T01:51:38.2731058Z             },
2026-06-21T01:51:38.2731139Z             {
2026-06-21T01:51:38.2731263Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T01:51:38.2731339Z               "line": 201
2026-06-21T01:51:38.2731420Z             },
2026-06-21T01:51:38.2731507Z             {
2026-06-21T01:51:38.2731630Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.2731711Z               "line": 442
2026-06-21T01:51:38.2731798Z             },
2026-06-21T01:51:38.2731884Z             {
2026-06-21T01:51:38.2731997Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.2732093Z               "line": 456
2026-06-21T01:51:38.2732166Z             },
2026-06-21T01:51:38.2732255Z             {
2026-06-21T01:51:38.2732368Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.2732458Z               "line": 475
2026-06-21T01:51:38.2732546Z             },
2026-06-21T01:51:38.2732621Z             {
2026-06-21T01:51:38.2732750Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T01:51:38.2732836Z               "line": 120
2026-06-21T01:51:38.2732922Z             },
2026-06-21T01:51:38.2733007Z             {
2026-06-21T01:51:38.2733113Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T01:51:38.2733203Z               "line": 163
2026-06-21T01:51:38.2733279Z             },
2026-06-21T01:51:38.2733364Z             {
2026-06-21T01:51:38.2733470Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:51:38.2733565Z               "line": 530
2026-06-21T01:51:38.2733641Z             },
2026-06-21T01:51:38.2733727Z             {
2026-06-21T01:51:38.2733838Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:51:38.2733928Z               "line": 616
2026-06-21T01:51:38.2734008Z             },
2026-06-21T01:51:38.2734086Z             {
2026-06-21T01:51:38.2734185Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:51:38.2734280Z               "line": 1006
2026-06-21T01:51:38.2734362Z             }
2026-06-21T01:51:38.2734448Z           ]
2026-06-21T01:51:38.2734533Z         }
2026-06-21T01:51:38.2734623Z       }
2026-06-21T01:51:38.2734699Z     },
2026-06-21T01:51:38.2734785Z     {
2026-06-21T01:51:38.2734883Z       "id": "REQ-NET-2",
2026-06-21T01:51:38.2735059Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-21T01:51:38.2735160Z       "requiredStages": [
2026-06-21T01:51:38.2735249Z         "impl"
2026-06-21T01:51:38.2735335Z       ],
2026-06-21T01:51:38.2735422Z       "stages": {
2026-06-21T01:51:38.2735512Z         "doc": {
2026-06-21T01:51:38.2735612Z           "complete": false,
2026-06-21T01:51:38.2735699Z           "evidence": []
2026-06-21T01:51:38.2735784Z         },
2026-06-21T01:51:38.2735869Z         "impl": {
2026-06-21T01:51:38.2735965Z           "complete": true,
2026-06-21T01:51:38.2736052Z           "evidence": [
2026-06-21T01:51:38.2736137Z             {
2026-06-21T01:51:38.2736261Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:51:38.2736347Z               "line": 57
2026-06-21T01:51:38.2736437Z             },
2026-06-21T01:51:38.2736522Z             {
2026-06-21T01:51:38.2736648Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.2736733Z               "line": 71
2026-06-21T01:51:38.2736823Z             },
2026-06-21T01:51:38.2736909Z             {
2026-06-21T01:51:38.2737029Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.2737118Z               "line": 81
2026-06-21T01:51:38.2737200Z             },
2026-06-21T01:51:38.2737287Z             {
2026-06-21T01:51:38.2737509Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.2737604Z               "line": 159
2026-06-21T01:51:38.2737754Z             },
2026-06-21T01:51:38.2737830Z             {
2026-06-21T01:51:38.2737950Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.2738042Z               "line": 175
2026-06-21T01:51:38.2738126Z             },
2026-06-21T01:51:38.2738212Z             {
2026-06-21T01:51:38.2738336Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:51:38.2738421Z               "line": 190
2026-06-21T01:51:38.2738507Z             }
2026-06-21T01:51:38.2738595Z           ]
2026-06-21T01:51:38.2738675Z         },
2026-06-21T01:51:38.2738760Z         "int": {
2026-06-21T01:51:38.2738846Z           "complete": false,
2026-06-21T01:51:38.2739037Z           "evidence": []
2026-06-21T01:51:38.2739123Z         },
2026-06-21T01:51:38.2739205Z         "unit": {
2026-06-21T01:51:38.2739294Z           "complete": true,
2026-06-21T01:51:38.2739389Z           "evidence": [
2026-06-21T01:51:38.2739476Z             {
2026-06-21T01:51:38.2739596Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:51:38.2739685Z               "line": 402
2026-06-21T01:51:38.2743706Z             }
2026-06-21T01:51:38.2743811Z           ]
2026-06-21T01:51:38.2743896Z         }
2026-06-21T01:51:38.2743968Z       }
2026-06-21T01:51:38.2744059Z     },
2026-06-21T01:51:38.2744144Z     {
2026-06-21T01:51:38.2744244Z       "id": "REQ-NET-3",
2026-06-21T01:51:38.2744445Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-21T01:51:38.2744545Z       "requiredStages": [
2026-06-21T01:51:38.2744637Z         "impl",
2026-06-21T01:51:38.2744717Z         "unit"
2026-06-21T01:51:38.2744806Z       ],
2026-06-21T01:51:38.2744888Z       "stages": {
2026-06-21T01:51:38.2744980Z         "doc": {
2026-06-21T01:51:38.2745083Z           "complete": false,
2026-06-21T01:51:38.2745173Z           "evidence": []
2026-06-21T01:51:38.2745283Z         },
2026-06-21T01:51:38.2745368Z         "impl": {
2026-06-21T01:51:38.2745462Z           "complete": true,
2026-06-21T01:51:38.2745552Z           "evidence": [
2026-06-21T01:51:38.2745633Z             {
2026-06-21T01:51:38.2745758Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:51:38.2745847Z               "line": 39
2026-06-21T01:51:38.2745934Z             },
2026-06-21T01:51:38.2746015Z             {
2026-06-21T01:51:38.2746138Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:51:38.2746220Z               "line": 182
2026-06-21T01:51:38.2746311Z             },
2026-06-21T01:51:38.2746401Z             {
2026-06-21T01:51:38.2746511Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:51:38.2746597Z               "line": 333
2026-06-21T01:51:38.2746682Z             },
2026-06-21T01:51:38.2746772Z             {
2026-06-21T01:51:38.2746879Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T01:51:38.2746964Z               "line": 36
2026-06-21T01:51:38.2747059Z             },
2026-06-21T01:51:38.2747140Z             {
2026-06-21T01:51:38.2747274Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.2747364Z               "line": 158
2026-06-21T01:51:38.2747455Z             },
2026-06-21T01:51:38.2747532Z             {
2026-06-21T01:51:38.2747664Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.2747755Z               "line": 238
2026-06-21T01:51:38.2747838Z             },
2026-06-21T01:51:38.2747937Z             {
2026-06-21T01:51:38.2748073Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.2748155Z               "line": 259
2026-06-21T01:51:38.2748245Z             },
2026-06-21T01:51:38.2748329Z             {
2026-06-21T01:51:38.2748443Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.2748535Z               "line": 317
2026-06-21T01:51:38.2748616Z             },
2026-06-21T01:51:38.2748850Z             {
2026-06-21T01:51:38.2749102Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.2749288Z               "line": 336
2026-06-21T01:51:38.2749373Z             },
2026-06-21T01:51:38.2749460Z             {
2026-06-21T01:51:38.2749573Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.2749668Z               "line": 374
2026-06-21T01:51:38.2749751Z             },
2026-06-21T01:51:38.2749836Z             {
2026-06-21T01:51:38.2749959Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.2750041Z               "line": 419
2026-06-21T01:51:38.2750123Z             },
2026-06-21T01:51:38.2750207Z             {
2026-06-21T01:51:38.2750337Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.2750423Z               "line": 432
2026-06-21T01:51:38.2750508Z             },
2026-06-21T01:51:38.2750593Z             {
2026-06-21T01:51:38.2750707Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:51:38.2750811Z               "line": 29
2026-06-21T01:51:38.2750895Z             },
2026-06-21T01:51:38.2750980Z             {
2026-06-21T01:51:38.2751101Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:51:38.2751187Z               "line": 72
2026-06-21T01:51:38.2751277Z             },
2026-06-21T01:51:38.2751363Z             {
2026-06-21T01:51:38.2751478Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:51:38.2751563Z               "line": 123
2026-06-21T01:51:38.2751644Z             }
2026-06-21T01:51:38.2751735Z           ]
2026-06-21T01:51:38.2751826Z         },
2026-06-21T01:51:38.2751920Z         "int": {
2026-06-21T01:51:38.2752007Z           "complete": false,
2026-06-21T01:51:38.2752106Z           "evidence": []
2026-06-21T01:51:38.2752192Z         },
2026-06-21T01:51:38.2752283Z         "unit": {
2026-06-21T01:51:38.2752370Z           "complete": true,
2026-06-21T01:51:38.2752465Z           "evidence": [
2026-06-21T01:51:38.2752560Z             {
2026-06-21T01:51:38.2752671Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T01:51:38.2752769Z               "line": 223
2026-06-21T01:51:38.2752850Z             },
2026-06-21T01:51:38.2752933Z             {
2026-06-21T01:51:38.2753055Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T01:51:38.2753137Z               "line": 351
2026-06-21T01:51:38.2753223Z             },
2026-06-21T01:51:38.2753310Z             {
2026-06-21T01:51:38.2753431Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T01:51:38.2753512Z               "line": 504
2026-06-21T01:51:38.2753603Z             },
2026-06-21T01:51:38.2753685Z             {
2026-06-21T01:51:38.2753808Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T01:51:38.2753903Z               "line": 93
2026-06-21T01:51:38.2753980Z             },
2026-06-21T01:51:38.2754056Z             {
2026-06-21T01:51:38.2754160Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T01:51:38.2754248Z               "line": 142
2026-06-21T01:51:38.2754333Z             },
2026-06-21T01:51:38.2754427Z             {
2026-06-21T01:51:38.2754552Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:51:38.2754643Z               "line": 315
2026-06-21T01:51:38.2754733Z             },
2026-06-21T01:51:38.2754813Z             {
2026-06-21T01:51:38.2754934Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:51:38.2755014Z               "line": 355
2026-06-21T01:51:38.2755105Z             },
2026-06-21T01:51:38.2755192Z             {
2026-06-21T01:51:38.2755310Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:51:38.2755400Z               "line": 494
2026-06-21T01:51:38.2755482Z             }
2026-06-21T01:51:38.2755568Z           ]
2026-06-21T01:51:38.2755648Z         }
2026-06-21T01:51:38.2755738Z       }
2026-06-21T01:51:38.2755824Z     },
2026-06-21T01:51:38.2755905Z     {
2026-06-21T01:51:38.2756003Z       "id": "REQ-NODE-IDENTITY",
2026-06-21T01:51:38.2756374Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-21T01:51:38.2756637Z       "requiredStages": [
2026-06-21T01:51:38.2756736Z         "impl",
2026-06-21T01:51:38.2756819Z         "unit"
2026-06-21T01:51:38.2756909Z       ],
2026-06-21T01:51:38.2756994Z       "stages": {
2026-06-21T01:51:38.2757085Z         "doc": {
2026-06-21T01:51:38.2757176Z           "complete": false,
2026-06-21T01:51:38.2757267Z           "evidence": []
2026-06-21T01:51:38.2757347Z         },
2026-06-21T01:51:38.2757453Z         "impl": {
2026-06-21T01:51:38.2757553Z           "complete": true,
2026-06-21T01:51:38.2757643Z           "evidence": [
2026-06-21T01:51:38.2757734Z             {
2026-06-21T01:51:38.2757858Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T01:51:38.2757949Z               "line": 60
2026-06-21T01:51:38.2758039Z             },
2026-06-21T01:51:38.2758125Z             {
2026-06-21T01:51:38.2758248Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T01:51:38.2758345Z               "line": 68
2026-06-21T01:51:38.2758436Z             },
2026-06-21T01:51:38.2758520Z             {
2026-06-21T01:51:38.2758648Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T01:51:38.2758743Z               "line": 86
2026-06-21T01:51:38.2758823Z             },
2026-06-21T01:51:38.2758912Z             {
2026-06-21T01:51:38.2759105Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T01:51:38.2759199Z               "line": 120
2026-06-21T01:51:38.2759284Z             },
2026-06-21T01:51:38.2759376Z             {
2026-06-21T01:51:38.2759495Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T01:51:38.2759584Z               "line": 127
2026-06-21T01:51:38.2759672Z             },
2026-06-21T01:51:38.2759757Z             {
2026-06-21T01:51:38.2759880Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T01:51:38.2759971Z               "line": 143
2026-06-21T01:51:38.2760063Z             },
2026-06-21T01:51:38.2760158Z             {
2026-06-21T01:51:38.2760272Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T01:51:38.2760373Z               "line": 16
2026-06-21T01:51:38.2760457Z             }
2026-06-21T01:51:38.2760543Z           ]
2026-06-21T01:51:38.2760631Z         },
2026-06-21T01:51:38.2760721Z         "int": {
2026-06-21T01:51:38.2760820Z           "complete": false,
2026-06-21T01:51:38.2760911Z           "evidence": []
2026-06-21T01:51:38.2761007Z         },
2026-06-21T01:51:38.2761092Z         "unit": {
2026-06-21T01:51:38.2761196Z           "complete": true,
2026-06-21T01:51:38.2761286Z           "evidence": [
2026-06-21T01:51:38.2761381Z             {
2026-06-21T01:51:38.2761503Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T01:51:38.2761594Z               "line": 199
2026-06-21T01:51:38.2761695Z             },
2026-06-21T01:51:38.2761780Z             {
2026-06-21T01:51:38.2761904Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T01:51:38.2762000Z               "line": 218
2026-06-21T01:51:38.2762090Z             },
2026-06-21T01:51:38.2762180Z             {
2026-06-21T01:51:38.2762296Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T01:51:38.2762395Z               "line": 234
2026-06-21T01:51:38.2762480Z             },
2026-06-21T01:51:38.2762572Z             {
2026-06-21T01:51:38.2762686Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T01:51:38.2762786Z               "line": 256
2026-06-21T01:51:38.2762872Z             },
2026-06-21T01:51:38.2762958Z             {
2026-06-21T01:51:38.2763072Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T01:51:38.2763163Z               "line": 124
2026-06-21T01:51:38.2763250Z             },
2026-06-21T01:51:38.2763329Z             {
2026-06-21T01:51:38.2763444Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T01:51:38.2763541Z               "line": 140
2026-06-21T01:51:38.2763778Z             },
2026-06-21T01:51:38.2763865Z             {
2026-06-21T01:51:38.2763982Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T01:51:38.2764178Z               "line": 155
2026-06-21T01:51:38.2764264Z             }
2026-06-21T01:51:38.2764363Z           ]
2026-06-21T01:51:38.2764449Z         }
2026-06-21T01:51:38.2764535Z       }
2026-06-21T01:51:38.2764630Z     },
2026-06-21T01:51:38.2764716Z     {
2026-06-21T01:51:38.2764813Z       "id": "REQ-NOTIF-1",
2026-06-21T01:51:38.2765170Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-21T01:51:38.2765274Z       "requiredStages": [
2026-06-21T01:51:38.2765364Z         "impl",
2026-06-21T01:51:38.2765452Z         "unit",
2026-06-21T01:51:38.2765541Z         "int"
2026-06-21T01:51:38.2765622Z       ],
2026-06-21T01:51:38.2765713Z       "stages": {
2026-06-21T01:51:38.2765804Z         "doc": {
2026-06-21T01:51:38.2765903Z           "complete": false,
2026-06-21T01:51:38.2766004Z           "evidence": []
2026-06-21T01:51:38.2766091Z         },
2026-06-21T01:51:38.2766184Z         "impl": {
2026-06-21T01:51:38.2766279Z           "complete": true,
2026-06-21T01:51:38.2766369Z           "evidence": [
2026-06-21T01:51:38.2766460Z             {
2026-06-21T01:51:38.2766592Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:51:38.2766687Z               "line": 514
2026-06-21T01:51:38.2766763Z             },
2026-06-21T01:51:38.2766854Z             {
2026-06-21T01:51:38.2766972Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2767064Z               "line": 30
2026-06-21T01:51:38.2767145Z             },
2026-06-21T01:51:38.2767225Z             {
2026-06-21T01:51:38.2767345Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2767427Z               "line": 69
2026-06-21T01:51:38.2767512Z             },
2026-06-21T01:51:38.2767597Z             {
2026-06-21T01:51:38.2767708Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2767798Z               "line": 93
2026-06-21T01:51:38.2767893Z             },
2026-06-21T01:51:38.2767979Z             {
2026-06-21T01:51:38.2768089Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2768184Z               "line": 107
2026-06-21T01:51:38.2768270Z             },
2026-06-21T01:51:38.2768361Z             {
2026-06-21T01:51:38.2768479Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2768570Z               "line": 142
2026-06-21T01:51:38.2768667Z             },
2026-06-21T01:51:38.2768756Z             {
2026-06-21T01:51:38.2768871Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2769029Z               "line": 187
2026-06-21T01:51:38.2769123Z             },
2026-06-21T01:51:38.2769208Z             {
2026-06-21T01:51:38.2769318Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2769411Z               "line": 258
2026-06-21T01:51:38.2769496Z             },
2026-06-21T01:51:38.2769587Z             {
2026-06-21T01:51:38.2769693Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2769792Z               "line": 372
2026-06-21T01:51:38.2769883Z             },
2026-06-21T01:51:38.2769960Z             {
2026-06-21T01:51:38.2770074Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2770164Z               "line": 479
2026-06-21T01:51:38.2770246Z             },
2026-06-21T01:51:38.2770332Z             {
2026-06-21T01:51:38.2770459Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:51:38.2770551Z               "line": 24
2026-06-21T01:51:38.2770637Z             },
2026-06-21T01:51:38.2770723Z             {
2026-06-21T01:51:38.2770837Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:51:38.2770928Z               "line": 34
2026-06-21T01:51:38.2771004Z             },
2026-06-21T01:51:38.2771094Z             {
2026-06-21T01:51:38.2771214Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:51:38.2771413Z               "line": 60
2026-06-21T01:51:38.2771591Z             },
2026-06-21T01:51:38.2771666Z             {
2026-06-21T01:51:38.2771789Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:51:38.2771880Z               "line": 82
2026-06-21T01:51:38.2771964Z             },
2026-06-21T01:51:38.2772049Z             {
2026-06-21T01:51:38.2772164Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:51:38.2772250Z               "line": 94
2026-06-21T01:51:38.2772326Z             },
2026-06-21T01:51:38.2772406Z             {
2026-06-21T01:51:38.2772532Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:51:38.2772618Z               "line": 96
2026-06-21T01:51:38.2772707Z             },
2026-06-21T01:51:38.2772789Z             {
2026-06-21T01:51:38.2772927Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-21T01:51:38.2773012Z               "line": 44
2026-06-21T01:51:38.2773104Z             },
2026-06-21T01:51:38.2773189Z             {
2026-06-21T01:51:38.2773303Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T01:51:38.2773394Z               "line": 20
2026-06-21T01:51:38.2773476Z             },
2026-06-21T01:51:38.2773556Z             {
2026-06-21T01:51:38.2773670Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T01:51:38.2773762Z               "line": 30
2026-06-21T01:51:38.2773843Z             },
2026-06-21T01:51:38.2773923Z             {
2026-06-21T01:51:38.2774038Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T01:51:38.2774125Z               "line": 50
2026-06-21T01:51:38.2774213Z             },
2026-06-21T01:51:38.2774290Z             {
2026-06-21T01:51:38.2774411Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:51:38.2774505Z               "line": 28
2026-06-21T01:51:38.2774580Z             },
2026-06-21T01:51:38.2774670Z             {
2026-06-21T01:51:38.2774781Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:51:38.2774880Z               "line": 126
2026-06-21T01:51:38.2774966Z             },
2026-06-21T01:51:38.2775057Z             {
2026-06-21T01:51:38.2775168Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:51:38.2775257Z               "line": 161
2026-06-21T01:51:38.2775348Z             },
2026-06-21T01:51:38.2775420Z             {
2026-06-21T01:51:38.2775538Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:51:38.2775624Z               "line": 202
2026-06-21T01:51:38.2775706Z             },
2026-06-21T01:51:38.2775801Z             {
2026-06-21T01:51:38.2775910Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:51:38.2776007Z               "line": 213
2026-06-21T01:51:38.2776101Z             },
2026-06-21T01:51:38.2776191Z             {
2026-06-21T01:51:38.2776302Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:51:38.2776388Z               "line": 238
2026-06-21T01:51:38.2776482Z             },
2026-06-21T01:51:38.2776573Z             {
2026-06-21T01:51:38.2776689Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:51:38.2776778Z               "line": 261
2026-06-21T01:51:38.2776867Z             },
2026-06-21T01:51:38.2776958Z             {
2026-06-21T01:51:38.2777081Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.2777185Z               "line": 86
2026-06-21T01:51:38.2777275Z             }
2026-06-21T01:51:38.2777372Z           ]
2026-06-21T01:51:38.2777462Z         },
2026-06-21T01:51:38.2777552Z         "int": {
2026-06-21T01:51:38.2777643Z           "complete": true,
2026-06-21T01:51:38.2777747Z           "evidence": [
2026-06-21T01:51:38.2777833Z             {
2026-06-21T01:51:38.2777949Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:51:38.2778039Z               "line": 285
2026-06-21T01:51:38.2778124Z             },
2026-06-21T01:51:38.2778220Z             {
2026-06-21T01:51:38.2778434Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T01:51:38.2778525Z               "line": 145
2026-06-21T01:51:38.2778692Z             },
2026-06-21T01:51:38.2778778Z             {
2026-06-21T01:51:38.2778908Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.2779102Z               "line": 684
2026-06-21T01:51:38.2779198Z             },
2026-06-21T01:51:38.2779288Z             {
2026-06-21T01:51:38.2779398Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.2779484Z               "line": 1102
2026-06-21T01:51:38.2779565Z             }
2026-06-21T01:51:38.2779645Z           ]
2026-06-21T01:51:38.2779730Z         },
2026-06-21T01:51:38.2779816Z         "unit": {
2026-06-21T01:51:38.2779915Z           "complete": true,
2026-06-21T01:51:38.2780009Z           "evidence": [
2026-06-21T01:51:38.2780094Z             {
2026-06-21T01:51:38.2780205Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2780291Z               "line": 572
2026-06-21T01:51:38.2780381Z             },
2026-06-21T01:51:38.2780472Z             {
2026-06-21T01:51:38.2780587Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2780672Z               "line": 636
2026-06-21T01:51:38.2780753Z             },
2026-06-21T01:51:38.2780830Z             {
2026-06-21T01:51:38.2780949Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2781034Z               "line": 740
2026-06-21T01:51:38.2781121Z             },
2026-06-21T01:51:38.2781206Z             {
2026-06-21T01:51:38.2781316Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2781411Z               "line": 772
2026-06-21T01:51:38.2781497Z             },
2026-06-21T01:51:38.2781592Z             {
2026-06-21T01:51:38.2781707Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2781803Z               "line": 840
2026-06-21T01:51:38.2781892Z             },
2026-06-21T01:51:38.2781974Z             {
2026-06-21T01:51:38.2782108Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2782203Z               "line": 898
2026-06-21T01:51:38.2782302Z             },
2026-06-21T01:51:38.2782387Z             {
2026-06-21T01:51:38.2782501Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2782585Z               "line": 1173
2026-06-21T01:51:38.2782676Z             },
2026-06-21T01:51:38.2782757Z             {
2026-06-21T01:51:38.2782877Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:51:38.2782971Z               "line": 157
2026-06-21T01:51:38.2783053Z             },
2026-06-21T01:51:38.2783143Z             {
2026-06-21T01:51:38.2783267Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:51:38.2783344Z               "line": 250
2026-06-21T01:51:38.2783435Z             },
2026-06-21T01:51:38.2783521Z             {
2026-06-21T01:51:38.2783644Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:51:38.2783740Z               "line": 273
2026-06-21T01:51:38.2783820Z             },
2026-06-21T01:51:38.2783906Z             {
2026-06-21T01:51:38.2784026Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:51:38.2784121Z               "line": 355
2026-06-21T01:51:38.2784197Z             },
2026-06-21T01:51:38.2784283Z             {
2026-06-21T01:51:38.2784403Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:51:38.2784488Z               "line": 392
2026-06-21T01:51:38.2784589Z             },
2026-06-21T01:51:38.2784666Z             {
2026-06-21T01:51:38.2784783Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T01:51:38.2784869Z               "line": 131
2026-06-21T01:51:38.2784961Z             },
2026-06-21T01:51:38.2785047Z             {
2026-06-21T01:51:38.2785164Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T01:51:38.2785264Z               "line": 72
2026-06-21T01:51:38.2785346Z             },
2026-06-21T01:51:38.2785427Z             {
2026-06-21T01:51:38.2785698Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T01:51:38.2785784Z               "line": 97
2026-06-21T01:51:38.2785952Z             },
2026-06-21T01:51:38.2786037Z             {
2026-06-21T01:51:38.2786155Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:51:38.2786242Z               "line": 379
2026-06-21T01:51:38.2786328Z             },
2026-06-21T01:51:38.2786413Z             {
2026-06-21T01:51:38.2786528Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:51:38.2786615Z               "line": 417
2026-06-21T01:51:38.2786690Z             },
2026-06-21T01:51:38.2786775Z             {
2026-06-21T01:51:38.2786877Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:51:38.2786972Z               "line": 433
2026-06-21T01:51:38.2787047Z             },
2026-06-21T01:51:38.2787138Z             {
2026-06-21T01:51:38.2787249Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:51:38.2787338Z               "line": 472
2026-06-21T01:51:38.2787432Z             },
2026-06-21T01:51:38.2787518Z             {
2026-06-21T01:51:38.2787636Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:51:38.2787726Z               "line": 489
2026-06-21T01:51:38.2787822Z             },
2026-06-21T01:51:38.2787908Z             {
2026-06-21T01:51:38.2788012Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:51:38.2788107Z               "line": 517
2026-06-21T01:51:38.2788194Z             },
2026-06-21T01:51:38.2788280Z             {
2026-06-21T01:51:38.2788389Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:51:38.2788485Z               "line": 548
2026-06-21T01:51:38.2788575Z             },
2026-06-21T01:51:38.2788646Z             {
2026-06-21T01:51:38.2788771Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.2788857Z               "line": 745
2026-06-21T01:51:38.2789047Z             }
2026-06-21T01:51:38.2789134Z           ]
2026-06-21T01:51:38.2789223Z         }
2026-06-21T01:51:38.2789314Z       }
2026-06-21T01:51:38.2789400Z     },
2026-06-21T01:51:38.2789491Z     {
2026-06-21T01:51:38.2789580Z       "id": "REQ-NOTIF-2",
2026-06-21T01:51:38.2789853Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-21T01:51:38.2789948Z       "requiredStages": [
2026-06-21T01:51:38.2790030Z         "doc",
2026-06-21T01:51:38.2790130Z         "impl",
2026-06-21T01:51:38.2790210Z         "unit",
2026-06-21T01:51:38.2790304Z         "int"
2026-06-21T01:51:38.2790385Z       ],
2026-06-21T01:51:38.2790476Z       "stages": {
2026-06-21T01:51:38.2790550Z         "doc": {
2026-06-21T01:51:38.2790645Z           "complete": true,
2026-06-21T01:51:38.2790737Z           "evidence": [
2026-06-21T01:51:38.2790818Z             {
2026-06-21T01:51:38.2790922Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.2791013Z               "line": 509
2026-06-21T01:51:38.2791099Z             },
2026-06-21T01:51:38.2791194Z             {
2026-06-21T01:51:38.2791298Z               "path": "docs/MANIFEST.md",
2026-06-21T01:51:38.2791395Z               "line": 123
2026-06-21T01:51:38.2791481Z             }
2026-06-21T01:51:38.2791575Z           ]
2026-06-21T01:51:38.2791661Z         },
2026-06-21T01:51:38.2791762Z         "impl": {
2026-06-21T01:51:38.2791852Z           "complete": true,
2026-06-21T01:51:38.2791947Z           "evidence": [
2026-06-21T01:51:38.2792048Z             {
2026-06-21T01:51:38.2792162Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2792247Z               "line": 287
2026-06-21T01:51:38.2792340Z             },
2026-06-21T01:51:38.2792429Z             {
2026-06-21T01:51:38.2792544Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2792640Z               "line": 301
2026-06-21T01:51:38.2792735Z             },
2026-06-21T01:51:38.2792815Z             {
2026-06-21T01:51:38.2792928Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2793146Z               "line": 326
2026-06-21T01:51:38.2793241Z             },
2026-06-21T01:51:38.2793432Z             {
2026-06-21T01:51:38.2793556Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.2793652Z               "line": 239
2026-06-21T01:51:38.2793738Z             },
2026-06-21T01:51:38.2793831Z             {
2026-06-21T01:51:38.2793957Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.2794057Z               "line": 95
2026-06-21T01:51:38.2794142Z             },
2026-06-21T01:51:38.2794229Z             {
2026-06-21T01:51:38.2794347Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2794433Z               "line": 2225
2026-06-21T01:51:38.2794519Z             },
2026-06-21T01:51:38.2794601Z             {
2026-06-21T01:51:38.2794705Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2794795Z               "line": 2274
2026-06-21T01:51:38.2794878Z             },
2026-06-21T01:51:38.2794967Z             {
2026-06-21T01:51:38.2795068Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2795144Z               "line": 2353
2026-06-21T01:51:38.2795226Z             },
2026-06-21T01:51:38.2795320Z             {
2026-06-21T01:51:38.2795425Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2795502Z               "line": 2392
2026-06-21T01:51:38.2795588Z             }
2026-06-21T01:51:38.2795672Z           ]
2026-06-21T01:51:38.2795752Z         },
2026-06-21T01:51:38.2795834Z         "int": {
2026-06-21T01:51:38.2795935Z           "complete": true,
2026-06-21T01:51:38.2796034Z           "evidence": [
2026-06-21T01:51:38.2796115Z             {
2026-06-21T01:51:38.2796254Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.2796344Z               "line": 810
2026-06-21T01:51:38.2796439Z             },
2026-06-21T01:51:38.2796521Z             {
2026-06-21T01:51:38.2796654Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.2796759Z               "line": 1345
2026-06-21T01:51:38.2796850Z             }
2026-06-21T01:51:38.2796945Z           ]
2026-06-21T01:51:38.2797040Z         },
2026-06-21T01:51:38.2797132Z         "unit": {
2026-06-21T01:51:38.2797226Z           "complete": true,
2026-06-21T01:51:38.2797326Z           "evidence": [
2026-06-21T01:51:38.2797423Z             {
2026-06-21T01:51:38.2797537Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2797627Z               "line": 1022
2026-06-21T01:51:38.2797708Z             },
2026-06-21T01:51:38.2797809Z             {
2026-06-21T01:51:38.2797917Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2798011Z               "line": 1090
2026-06-21T01:51:38.2798112Z             },
2026-06-21T01:51:38.2798192Z             {
2026-06-21T01:51:38.2798296Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2798387Z               "line": 8210
2026-06-21T01:51:38.2798468Z             },
2026-06-21T01:51:38.2798549Z             {
2026-06-21T01:51:38.2798653Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2798749Z               "line": 8265
2026-06-21T01:51:38.2798830Z             }
2026-06-21T01:51:38.2798925Z           ]
2026-06-21T01:51:38.2799112Z         }
2026-06-21T01:51:38.2799211Z       }
2026-06-21T01:51:38.2799297Z     },
2026-06-21T01:51:38.2799393Z     {
2026-06-21T01:51:38.2799493Z       "id": "REQ-PAIR-1",
2026-06-21T01:51:38.2799602Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-21T01:51:38.2799703Z       "requiredStages": [
2026-06-21T01:51:38.2799788Z         "impl",
2026-06-21T01:51:38.2799878Z         "unit",
2026-06-21T01:51:38.2799955Z         "int"
2026-06-21T01:51:38.2800037Z       ],
2026-06-21T01:51:38.2800136Z       "stages": {
2026-06-21T01:51:38.2800212Z         "doc": {
2026-06-21T01:51:38.2800314Z           "complete": false,
2026-06-21T01:51:38.2800408Z           "evidence": []
2026-06-21T01:51:38.2800499Z         },
2026-06-21T01:51:38.2800580Z         "impl": {
2026-06-21T01:51:38.2800803Z           "complete": true,
2026-06-21T01:51:38.2800902Z           "evidence": [
2026-06-21T01:51:38.2801082Z             {
2026-06-21T01:51:38.2801234Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:51:38.2801325Z               "line": 27
2026-06-21T01:51:38.2801454Z             },
2026-06-21T01:51:38.2801544Z             {
2026-06-21T01:51:38.2801692Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:51:38.2801849Z               "line": 88
2026-06-21T01:51:38.2801936Z             },
2026-06-21T01:51:38.2802046Z             {
2026-06-21T01:51:38.2802173Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:51:38.2802275Z               "line": 110
2026-06-21T01:51:38.2802374Z             },
2026-06-21T01:51:38.2802474Z             {
2026-06-21T01:51:38.2802608Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:51:38.2802698Z               "line": 153
2026-06-21T01:51:38.2802798Z             },
2026-06-21T01:51:38.2802885Z             {
2026-06-21T01:51:38.2803017Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:51:38.2803104Z               "line": 182
2026-06-21T01:51:38.2803190Z             },
2026-06-21T01:51:38.2803281Z             {
2026-06-21T01:51:38.2803407Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T01:51:38.2803498Z               "line": 29
2026-06-21T01:51:38.2803584Z             },
2026-06-21T01:51:38.2803668Z             {
2026-06-21T01:51:38.2803815Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T01:51:38.2803902Z               "line": 31
2026-06-21T01:51:38.2803997Z             },
2026-06-21T01:51:38.2804067Z             {
2026-06-21T01:51:38.2804197Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:51:38.2804278Z               "line": 44
2026-06-21T01:51:38.2804373Z             },
2026-06-21T01:51:38.2804450Z             {
2026-06-21T01:51:38.2804574Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:51:38.2804673Z               "line": 171
2026-06-21T01:51:38.2804760Z             },
2026-06-21T01:51:38.2804851Z             {
2026-06-21T01:51:38.2804970Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:51:38.2805055Z               "line": 376
2026-06-21T01:51:38.2805142Z             }
2026-06-21T01:51:38.2805222Z           ]
2026-06-21T01:51:38.2805313Z         },
2026-06-21T01:51:38.2805394Z         "int": {
2026-06-21T01:51:38.2805490Z           "complete": true,
2026-06-21T01:51:38.2805579Z           "evidence": [
2026-06-21T01:51:38.2805661Z             {
2026-06-21T01:51:38.2805781Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.2805870Z               "line": 645
2026-06-21T01:51:38.2805957Z             },
2026-06-21T01:51:38.2806043Z             {
2026-06-21T01:51:38.2806167Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.2806256Z               "line": 887
2026-06-21T01:51:38.2806351Z             }
2026-06-21T01:51:38.2806442Z           ]
2026-06-21T01:51:38.2806528Z         },
2026-06-21T01:51:38.2806622Z         "unit": {
2026-06-21T01:51:38.2806719Z           "complete": true,
2026-06-21T01:51:38.2806814Z           "evidence": [
2026-06-21T01:51:38.2806904Z             {
2026-06-21T01:51:38.2807039Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:51:38.2807134Z               "line": 236
2026-06-21T01:51:38.2807219Z             },
2026-06-21T01:51:38.2807310Z             {
2026-06-21T01:51:38.2807429Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:51:38.2807520Z               "line": 349
2026-06-21T01:51:38.2807605Z             },
2026-06-21T01:51:38.2807692Z             {
2026-06-21T01:51:38.2807824Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T01:51:38.2807915Z               "line": 194
2026-06-21T01:51:38.2808097Z             },
2026-06-21T01:51:38.2808177Z             {
2026-06-21T01:51:38.2808307Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T01:51:38.2808468Z               "line": 216
2026-06-21T01:51:38.2813062Z             },
2026-06-21T01:51:38.2813192Z             {
2026-06-21T01:51:38.2813334Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T01:51:38.2813436Z               "line": 230
2026-06-21T01:51:38.2813516Z             },
2026-06-21T01:51:38.2813606Z             {
2026-06-21T01:51:38.2813736Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T01:51:38.2813831Z               "line": 242
2026-06-21T01:51:38.2813921Z             },
2026-06-21T01:51:38.2814010Z             {
2026-06-21T01:51:38.2814139Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T01:51:38.2814232Z               "line": 256
2026-06-21T01:51:38.2814322Z             },
2026-06-21T01:51:38.2814409Z             {
2026-06-21T01:51:38.2814552Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T01:51:38.2814646Z               "line": 270
2026-06-21T01:51:38.2814724Z             },
2026-06-21T01:51:38.2814815Z             {
2026-06-21T01:51:38.2814943Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T01:51:38.2815039Z               "line": 277
2026-06-21T01:51:38.2815124Z             },
2026-06-21T01:51:38.2815201Z             {
2026-06-21T01:51:38.2815320Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T01:51:38.2815411Z               "line": 295
2026-06-21T01:51:38.2815501Z             },
2026-06-21T01:51:38.2815582Z             {
2026-06-21T01:51:38.2815712Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:51:38.2815792Z               "line": 968
2026-06-21T01:51:38.2815873Z             },
2026-06-21T01:51:38.2815964Z             {
2026-06-21T01:51:38.2816083Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:51:38.2816178Z               "line": 1051
2026-06-21T01:51:38.2816259Z             },
2026-06-21T01:51:38.2816342Z             {
2026-06-21T01:51:38.2816473Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:51:38.2816555Z               "line": 1121
2026-06-21T01:51:38.2816642Z             },
2026-06-21T01:51:38.2816722Z             {
2026-06-21T01:51:38.2816854Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:51:38.2816944Z               "line": 1182
2026-06-21T01:51:38.2817036Z             },
2026-06-21T01:51:38.2817121Z             {
2026-06-21T01:51:38.2817245Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:51:38.2817341Z               "line": 1238
2026-06-21T01:51:38.2817427Z             },
2026-06-21T01:51:38.2817516Z             {
2026-06-21T01:51:38.2817637Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:51:38.2817732Z               "line": 1457
2026-06-21T01:51:38.2817822Z             }
2026-06-21T01:51:38.2817903Z           ]
2026-06-21T01:51:38.2817999Z         }
2026-06-21T01:51:38.2818085Z       }
2026-06-21T01:51:38.2818184Z     },
2026-06-21T01:51:38.2818271Z     {
2026-06-21T01:51:38.2818380Z       "id": "REQ-PAIR-2",
2026-06-21T01:51:38.2818519Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-21T01:51:38.2818619Z       "requiredStages": [],
2026-06-21T01:51:38.2818718Z       "stages": {
2026-06-21T01:51:38.2818799Z         "doc": {
2026-06-21T01:51:38.2818905Z           "complete": false,
2026-06-21T01:51:38.2819080Z           "evidence": []
2026-06-21T01:51:38.2819170Z         },
2026-06-21T01:51:38.2819275Z         "impl": {
2026-06-21T01:51:38.2819359Z           "complete": false,
2026-06-21T01:51:38.2819463Z           "evidence": []
2026-06-21T01:51:38.2819545Z         },
2026-06-21T01:51:38.2819637Z         "int": {
2026-06-21T01:51:38.2819730Z           "complete": false,
2026-06-21T01:51:38.2819816Z           "evidence": []
2026-06-21T01:51:38.2820088Z         },
2026-06-21T01:51:38.2820170Z         "unit": {
2026-06-21T01:51:38.2820269Z           "complete": false,
2026-06-21T01:51:38.2820451Z           "evidence": []
2026-06-21T01:51:38.2820533Z         }
2026-06-21T01:51:38.2820613Z       }
2026-06-21T01:51:38.2820703Z     },
2026-06-21T01:51:38.2820790Z     {
2026-06-21T01:51:38.2820885Z       "id": "REQ-PAIR-3",
2026-06-21T01:51:38.2821042Z       "title": "Fetch current pairing code from any paired node",
2026-06-21T01:51:38.2821124Z       "requiredStages": [
2026-06-21T01:51:38.2821209Z         "impl",
2026-06-21T01:51:38.2821295Z         "unit"
2026-06-21T01:51:38.2821386Z       ],
2026-06-21T01:51:38.2821477Z       "stages": {
2026-06-21T01:51:38.2821566Z         "doc": {
2026-06-21T01:51:38.2821662Z           "complete": false,
2026-06-21T01:51:38.2821759Z           "evidence": []
2026-06-21T01:51:38.2821858Z         },
2026-06-21T01:51:38.2821942Z         "impl": {
2026-06-21T01:51:38.2822047Z           "complete": true,
2026-06-21T01:51:38.2822142Z           "evidence": [
2026-06-21T01:51:38.2822226Z             {
2026-06-21T01:51:38.2822344Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2822431Z               "line": 3259
2026-06-21T01:51:38.2822523Z             },
2026-06-21T01:51:38.2822602Z             {
2026-06-21T01:51:38.2822717Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2822812Z               "line": 3328
2026-06-21T01:51:38.2822893Z             },
2026-06-21T01:51:38.2822984Z             {
2026-06-21T01:51:38.2823085Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2823171Z               "line": 3709
2026-06-21T01:51:38.2823241Z             },
2026-06-21T01:51:38.2823332Z             {
2026-06-21T01:51:38.2823438Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2823519Z               "line": 4961
2026-06-21T01:51:38.2823609Z             }
2026-06-21T01:51:38.2823681Z           ]
2026-06-21T01:51:38.2823771Z         },
2026-06-21T01:51:38.2823847Z         "int": {
2026-06-21T01:51:38.2823947Z           "complete": false,
2026-06-21T01:51:38.2824044Z           "evidence": []
2026-06-21T01:51:38.2824132Z         },
2026-06-21T01:51:38.2824224Z         "unit": {
2026-06-21T01:51:38.2824320Z           "complete": true,
2026-06-21T01:51:38.2824406Z           "evidence": [
2026-06-21T01:51:38.2824490Z             {
2026-06-21T01:51:38.2824599Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2824700Z               "line": 9964
2026-06-21T01:51:38.2824778Z             },
2026-06-21T01:51:38.2824873Z             {
2026-06-21T01:51:38.2824964Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2825061Z               "line": 10179
2026-06-21T01:51:38.2825136Z             },
2026-06-21T01:51:38.2825226Z             {
2026-06-21T01:51:38.2825337Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2825422Z               "line": 10838
2026-06-21T01:51:38.2825522Z             },
2026-06-21T01:51:38.2825604Z             {
2026-06-21T01:51:38.2825718Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2825808Z               "line": 10857
2026-06-21T01:51:38.2825899Z             },
2026-06-21T01:51:38.2825990Z             {
2026-06-21T01:51:38.2826090Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2826185Z               "line": 10881
2026-06-21T01:51:38.2826267Z             },
2026-06-21T01:51:38.2826361Z             {
2026-06-21T01:51:38.2826461Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2826558Z               "line": 10900
2026-06-21T01:51:38.2826652Z             },
2026-06-21T01:51:38.2826733Z             {
2026-06-21T01:51:38.2826844Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2826935Z               "line": 10913
2026-06-21T01:51:38.2827024Z             },
2026-06-21T01:51:38.2827120Z             {
2026-06-21T01:51:38.2827221Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2827319Z               "line": 10922
2026-06-21T01:51:38.2827490Z             }
2026-06-21T01:51:38.2827577Z           ]
2026-06-21T01:51:38.2827653Z         }
2026-06-21T01:51:38.2827805Z       }
2026-06-21T01:51:38.2827892Z     },
2026-06-21T01:51:38.2827977Z     {
2026-06-21T01:51:38.2828076Z       "id": "REQ-PAIR-4",
2026-06-21T01:51:38.2828187Z       "title": "Subnet naming on first pairing",
2026-06-21T01:51:38.2828297Z       "requiredStages": [
2026-06-21T01:51:38.2828387Z         "impl",
2026-06-21T01:51:38.2828483Z         "unit"
2026-06-21T01:51:38.2828568Z       ],
2026-06-21T01:51:38.2828659Z       "stages": {
2026-06-21T01:51:38.2828749Z         "doc": {
2026-06-21T01:51:38.2828841Z           "complete": false,
2026-06-21T01:51:38.2828931Z           "evidence": []
2026-06-21T01:51:38.2829127Z         },
2026-06-21T01:51:38.2829222Z         "impl": {
2026-06-21T01:51:38.2829317Z           "complete": true,
2026-06-21T01:51:38.2829417Z           "evidence": [
2026-06-21T01:51:38.2829508Z             {
2026-06-21T01:51:38.2829635Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:51:38.2829745Z               "line": 174
2026-06-21T01:51:38.2829826Z             }
2026-06-21T01:51:38.2829919Z           ]
2026-06-21T01:51:38.2830004Z         },
2026-06-21T01:51:38.2830091Z         "int": {
2026-06-21T01:51:38.2830192Z           "complete": false,
2026-06-21T01:51:38.2830281Z           "evidence": []
2026-06-21T01:51:38.2830371Z         },
2026-06-21T01:51:38.2830444Z         "unit": {
2026-06-21T01:51:38.2830544Z           "complete": true,
2026-06-21T01:51:38.2830638Z           "evidence": [
2026-06-21T01:51:38.2830735Z             {
2026-06-21T01:51:38.2830873Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:51:38.2830953Z               "line": 1294
2026-06-21T01:51:38.2831045Z             }
2026-06-21T01:51:38.2831121Z           ]
2026-06-21T01:51:38.2831206Z         }
2026-06-21T01:51:38.2831287Z       }
2026-06-21T01:51:38.2831369Z     },
2026-06-21T01:51:38.2831459Z     {
2026-06-21T01:51:38.2831555Z       "id": "REQ-PAIR-5",
2026-06-21T01:51:38.2831860Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-21T01:51:38.2831951Z       "requiredStages": [
2026-06-21T01:51:38.2832046Z         "impl",
2026-06-21T01:51:38.2832136Z         "unit",
2026-06-21T01:51:38.2832217Z         "int"
2026-06-21T01:51:38.2832309Z       ],
2026-06-21T01:51:38.2832395Z       "stages": {
2026-06-21T01:51:38.2832483Z         "doc": {
2026-06-21T01:51:38.2832578Z           "complete": false,
2026-06-21T01:51:38.2832678Z           "evidence": []
2026-06-21T01:51:38.2832758Z         },
2026-06-21T01:51:38.2832847Z         "impl": {
2026-06-21T01:51:38.2832953Z           "complete": true,
2026-06-21T01:51:38.2833035Z           "evidence": [
2026-06-21T01:51:38.2833120Z             {
2026-06-21T01:51:38.2833248Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:51:38.2833345Z               "line": 44
2026-06-21T01:51:38.2833426Z             },
2026-06-21T01:51:38.2833525Z             {
2026-06-21T01:51:38.2833660Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:51:38.2833745Z               "line": 96
2026-06-21T01:51:38.2833834Z             },
2026-06-21T01:51:38.2833917Z             {
2026-06-21T01:51:38.2834040Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:51:38.2834140Z               "line": 107
2026-06-21T01:51:38.2834227Z             },
2026-06-21T01:51:38.2834313Z             {
2026-06-21T01:51:38.2834436Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:51:38.2834537Z               "line": 124
2026-06-21T01:51:38.2834613Z             },
2026-06-21T01:51:38.2834697Z             {
2026-06-21T01:51:38.2834827Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:51:38.2834919Z               "line": 155
2026-06-21T01:51:38.2835008Z             },
2026-06-21T01:51:38.2835083Z             {
2026-06-21T01:51:38.2835339Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:51:38.2835429Z               "line": 195
2026-06-21T01:51:38.2835601Z             },
2026-06-21T01:51:38.2835682Z             {
2026-06-21T01:51:38.2835806Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:51:38.2835902Z               "line": 251
2026-06-21T01:51:38.2835987Z             },
2026-06-21T01:51:38.2836082Z             {
2026-06-21T01:51:38.2836231Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T01:51:38.2836325Z               "line": 33
2026-06-21T01:51:38.2836425Z             },
2026-06-21T01:51:38.2836508Z             {
2026-06-21T01:51:38.2836654Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T01:51:38.2836745Z               "line": 45
2026-06-21T01:51:38.2836832Z             },
2026-06-21T01:51:38.2836916Z             {
2026-06-21T01:51:38.2837060Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T01:51:38.2837166Z               "line": 59
2026-06-21T01:51:38.2837250Z             },
2026-06-21T01:51:38.2837341Z             {
2026-06-21T01:51:38.2837476Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:51:38.2837564Z               "line": 376
2026-06-21T01:51:38.2837651Z             }
2026-06-21T01:51:38.2837734Z           ]
2026-06-21T01:51:38.2837824Z         },
2026-06-21T01:51:38.2837903Z         "int": {
2026-06-21T01:51:38.2838002Z           "complete": true,
2026-06-21T01:51:38.2838089Z           "evidence": [
2026-06-21T01:51:38.2838181Z             {
2026-06-21T01:51:38.2838303Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.2838399Z               "line": 887
2026-06-21T01:51:38.2838485Z             },
2026-06-21T01:51:38.2838561Z             {
2026-06-21T01:51:38.2838690Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:51:38.2838785Z               "line": 342
2026-06-21T01:51:38.2838876Z             }
2026-06-21T01:51:38.2839053Z           ]
2026-06-21T01:51:38.2839138Z         },
2026-06-21T01:51:38.2839233Z         "unit": {
2026-06-21T01:51:38.2839329Z           "complete": true,
2026-06-21T01:51:38.2839420Z           "evidence": [
2026-06-21T01:51:38.2839500Z             {
2026-06-21T01:51:38.2839624Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:51:38.2839711Z               "line": 293
2026-06-21T01:51:38.2839796Z             },
2026-06-21T01:51:38.2839886Z             {
2026-06-21T01:51:38.2840007Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:51:38.2840092Z               "line": 304
2026-06-21T01:51:38.2840167Z             },
2026-06-21T01:51:38.2840252Z             {
2026-06-21T01:51:38.2840381Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:51:38.2840470Z               "line": 406
2026-06-21T01:51:38.2840559Z             },
2026-06-21T01:51:38.2840627Z             {
2026-06-21T01:51:38.2840771Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T01:51:38.2840860Z               "line": 72
2026-06-21T01:51:38.2840946Z             },
2026-06-21T01:51:38.2841038Z             {
2026-06-21T01:51:38.2841166Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T01:51:38.2841261Z               "line": 82
2026-06-21T01:51:38.2841343Z             },
2026-06-21T01:51:38.2841437Z             {
2026-06-21T01:51:38.2841566Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T01:51:38.2841667Z               "line": 100
2026-06-21T01:51:38.2841757Z             },
2026-06-21T01:51:38.2841837Z             {
2026-06-21T01:51:38.2841982Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T01:51:38.2842077Z               "line": 110
2026-06-21T01:51:38.2842162Z             },
2026-06-21T01:51:38.2842250Z             {
2026-06-21T01:51:38.2842386Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T01:51:38.2842602Z               "line": 125
2026-06-21T01:51:38.2842696Z             },
2026-06-21T01:51:38.2842898Z             {
2026-06-21T01:51:38.2843030Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:51:38.2843114Z               "line": 1044
2026-06-21T01:51:38.2843201Z             },
2026-06-21T01:51:38.2843281Z             {
2026-06-21T01:51:38.2843407Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:51:38.2843494Z               "line": 1110
2026-06-21T01:51:38.2843576Z             },
2026-06-21T01:51:38.2843661Z             {
2026-06-21T01:51:38.2843785Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:51:38.2843876Z               "line": 1357
2026-06-21T01:51:38.2843962Z             }
2026-06-21T01:51:38.2844051Z           ]
2026-06-21T01:51:38.2844138Z         }
2026-06-21T01:51:38.2844224Z       }
2026-06-21T01:51:38.2844305Z     },
2026-06-21T01:51:38.2844390Z     {
2026-06-21T01:51:38.2844496Z       "id": "REQ-PAIR-6",
2026-06-21T01:51:38.2844758Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-21T01:51:38.2844887Z       "requiredStages": [
2026-06-21T01:51:38.2845015Z         "impl",
2026-06-21T01:51:38.2845154Z         "unit"
2026-06-21T01:51:38.2845253Z       ],
2026-06-21T01:51:38.2845353Z       "stages": {
2026-06-21T01:51:38.2845436Z         "doc": {
2026-06-21T01:51:38.2845526Z           "complete": false,
2026-06-21T01:51:38.2845643Z           "evidence": []
2026-06-21T01:51:38.2845734Z         },
2026-06-21T01:51:38.2845853Z         "impl": {
2026-06-21T01:51:38.2845965Z           "complete": true,
2026-06-21T01:51:38.2846061Z           "evidence": [
2026-06-21T01:51:38.2846156Z             {
2026-06-21T01:51:38.2846270Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2846370Z               "line": 3328
2026-06-21T01:51:38.2846457Z             },
2026-06-21T01:51:38.2846552Z             {
2026-06-21T01:51:38.2846666Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2846767Z               "line": 3709
2026-06-21T01:51:38.2846867Z             },
2026-06-21T01:51:38.2846952Z             {
2026-06-21T01:51:38.2847077Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.2847171Z               "line": 18
2026-06-21T01:51:38.2847272Z             },
2026-06-21T01:51:38.2847358Z             {
2026-06-21T01:51:38.2847486Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.2847577Z               "line": 49
2026-06-21T01:51:38.2847664Z             },
2026-06-21T01:51:38.2847754Z             {
2026-06-21T01:51:38.2847854Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.2847949Z               "line": 318
2026-06-21T01:51:38.2848031Z             }
2026-06-21T01:51:38.2848125Z           ]
2026-06-21T01:51:38.2848221Z         },
2026-06-21T01:51:38.2848308Z         "int": {
2026-06-21T01:51:38.2848412Z           "complete": false,
2026-06-21T01:51:38.2848511Z           "evidence": []
2026-06-21T01:51:38.2848611Z         },
2026-06-21T01:51:38.2848697Z         "unit": {
2026-06-21T01:51:38.2848801Z           "complete": true,
2026-06-21T01:51:38.2848896Z           "evidence": [
2026-06-21T01:51:38.2849074Z             {
2026-06-21T01:51:38.2849202Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2849298Z               "line": 10935
2026-06-21T01:51:38.2849398Z             },
2026-06-21T01:51:38.2849483Z             {
2026-06-21T01:51:38.2849593Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2849688Z               "line": 10952
2026-06-21T01:51:38.2849779Z             },
2026-06-21T01:51:38.2849874Z             {
2026-06-21T01:51:38.2849989Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.2850084Z               "line": 383
2026-06-21T01:51:38.2850170Z             },
2026-06-21T01:51:38.2850262Z             {
2026-06-21T01:51:38.2850384Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:51:38.2850624Z               "line": 392
2026-06-21T01:51:38.2850708Z             }
2026-06-21T01:51:38.2850884Z           ]
2026-06-21T01:51:38.2850983Z         }
2026-06-21T01:51:38.2851068Z       }
2026-06-21T01:51:38.2851158Z     },
2026-06-21T01:51:38.2851244Z     {
2026-06-21T01:51:38.2851349Z       "id": "REQ-PAIR-7",
2026-06-21T01:51:38.2851511Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-21T01:51:38.2851607Z       "requiredStages": [],
2026-06-21T01:51:38.2851706Z       "stages": {
2026-06-21T01:51:38.2851792Z         "doc": {
2026-06-21T01:51:38.2851893Z           "complete": false,
2026-06-21T01:51:38.2851983Z           "evidence": []
2026-06-21T01:51:38.2852074Z         },
2026-06-21T01:51:38.2852161Z         "impl": {
2026-06-21T01:51:38.2852246Z           "complete": false,
2026-06-21T01:51:38.2852341Z           "evidence": []
2026-06-21T01:51:38.2852427Z         },
2026-06-21T01:51:38.2852518Z         "int": {
2026-06-21T01:51:38.2852627Z           "complete": false,
2026-06-21T01:51:38.2852722Z           "evidence": []
2026-06-21T01:51:38.2852814Z         },
2026-06-21T01:51:38.2852899Z         "unit": {
2026-06-21T01:51:38.2852985Z           "complete": false,
2026-06-21T01:51:38.2853066Z           "evidence": []
2026-06-21T01:51:38.2853167Z         }
2026-06-21T01:51:38.2853256Z       }
2026-06-21T01:51:38.2853338Z     },
2026-06-21T01:51:38.2853429Z     {
2026-06-21T01:51:38.2853529Z       "id": "REQ-PAIR-8",
2026-06-21T01:51:38.2855070Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-21T01:51:38.2855184Z       "requiredStages": [
2026-06-21T01:51:38.2855284Z         "impl",
2026-06-21T01:51:38.2855385Z         "unit"
2026-06-21T01:51:38.2855470Z       ],
2026-06-21T01:51:38.2855580Z       "stages": {
2026-06-21T01:51:38.2855677Z         "doc": {
2026-06-21T01:51:38.2855785Z           "complete": false,
2026-06-21T01:51:38.2855895Z           "evidence": []
2026-06-21T01:51:38.2855982Z         },
2026-06-21T01:51:38.2856072Z         "impl": {
2026-06-21T01:51:38.2856170Z           "complete": true,
2026-06-21T01:51:38.2856270Z           "evidence": [
2026-06-21T01:51:38.2856365Z             {
2026-06-21T01:51:38.2856497Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.2856596Z               "line": 577
2026-06-21T01:51:38.2856683Z             },
2026-06-21T01:51:38.2856779Z             {
2026-06-21T01:51:38.2856907Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T01:51:38.2857003Z               "line": 22
2026-06-21T01:51:38.2857084Z             },
2026-06-21T01:51:38.2857183Z             {
2026-06-21T01:51:38.2857346Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T01:51:38.2857437Z               "line": 76
2026-06-21T01:51:38.2857521Z             },
2026-06-21T01:51:38.2857604Z             {
2026-06-21T01:51:38.2857736Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T01:51:38.2857822Z               "line": 127
2026-06-21T01:51:38.2857919Z             }
2026-06-21T01:51:38.2858009Z           ]
2026-06-21T01:51:38.2858085Z         },
2026-06-21T01:51:38.2858175Z         "int": {
2026-06-21T01:51:38.2858267Z           "complete": false,
2026-06-21T01:51:38.2858357Z           "evidence": []
2026-06-21T01:51:38.2858451Z         },
2026-06-21T01:51:38.2858549Z         "unit": {
2026-06-21T01:51:38.2858653Z           "complete": true,
2026-06-21T01:51:38.2858738Z           "evidence": [
2026-06-21T01:51:38.2858834Z             {
2026-06-21T01:51:38.2859075Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T01:51:38.2859390Z               "line": 183
2026-06-21T01:51:38.2859480Z             },
2026-06-21T01:51:38.2859582Z             {
2026-06-21T01:51:38.2859834Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T01:51:38.2859929Z               "line": 195
2026-06-21T01:51:38.2860024Z             },
2026-06-21T01:51:38.2860115Z             {
2026-06-21T01:51:38.2860249Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T01:51:38.2860348Z               "line": 211
2026-06-21T01:51:38.2860439Z             },
2026-06-21T01:51:38.2860540Z             {
2026-06-21T01:51:38.2860663Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T01:51:38.2860759Z               "line": 227
2026-06-21T01:51:38.2860836Z             }
2026-06-21T01:51:38.2860934Z           ]
2026-06-21T01:51:38.2861021Z         }
2026-06-21T01:51:38.2861098Z       }
2026-06-21T01:51:38.2861198Z     },
2026-06-21T01:51:38.2861292Z     {
2026-06-21T01:51:38.2861396Z       "id": "REQ-PICKER-1",
2026-06-21T01:51:38.2865082Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-21T01:51:38.2865224Z       "requiredStages": [
2026-06-21T01:51:38.2865311Z         "impl",
2026-06-21T01:51:38.2865401Z         "unit"
2026-06-21T01:51:38.2865477Z       ],
2026-06-21T01:51:38.2865568Z       "stages": {
2026-06-21T01:51:38.2865654Z         "doc": {
2026-06-21T01:51:38.2865740Z           "complete": false,
2026-06-21T01:51:38.2865835Z           "evidence": []
2026-06-21T01:51:38.2865932Z         },
2026-06-21T01:51:38.2866030Z         "impl": {
2026-06-21T01:51:38.2866126Z           "complete": true,
2026-06-21T01:51:38.2866232Z           "evidence": [
2026-06-21T01:51:38.2866317Z             {
2026-06-21T01:51:38.2866446Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.2866532Z               "line": 248
2026-06-21T01:51:38.2866627Z             },
2026-06-21T01:51:38.2866722Z             {
2026-06-21T01:51:38.2866844Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.2866945Z               "line": 263
2026-06-21T01:51:38.2867033Z             }
2026-06-21T01:51:38.2867133Z           ]
2026-06-21T01:51:38.2867215Z         },
2026-06-21T01:51:38.2867296Z         "int": {
2026-06-21T01:51:38.2867405Z           "complete": false,
2026-06-21T01:51:38.2867500Z           "evidence": []
2026-06-21T01:51:38.2867592Z         },
2026-06-21T01:51:38.2867677Z         "unit": {
2026-06-21T01:51:38.2867786Z           "complete": true,
2026-06-21T01:51:38.2867873Z           "evidence": [
2026-06-21T01:51:38.2867968Z             {
2026-06-21T01:51:38.2868091Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.2868183Z               "line": 476
2026-06-21T01:51:38.2868278Z             },
2026-06-21T01:51:38.2868359Z             {
2026-06-21T01:51:38.2868484Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.2868688Z               "line": 753
2026-06-21T01:51:38.2868769Z             },
2026-06-21T01:51:38.2868865Z             {
2026-06-21T01:51:38.2869161Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.2869250Z               "line": 886
2026-06-21T01:51:38.2869332Z             },
2026-06-21T01:51:38.2869433Z             {
2026-06-21T01:51:38.2869560Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T01:51:38.2869650Z               "line": 455
2026-06-21T01:51:38.2869750Z             }
2026-06-21T01:51:38.2869836Z           ]
2026-06-21T01:51:38.2869936Z         }
2026-06-21T01:51:38.2870017Z       }
2026-06-21T01:51:38.2870108Z     },
2026-06-21T01:51:38.2870194Z     {
2026-06-21T01:51:38.2870288Z       "id": "REQ-PICKER-2",
2026-06-21T01:51:38.2872283Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-21T01:51:38.2872389Z       "requiredStages": [
2026-06-21T01:51:38.2872474Z         "impl",
2026-06-21T01:51:38.2872569Z         "unit"
2026-06-21T01:51:38.2872646Z       ],
2026-06-21T01:51:38.2872746Z       "stages": {
2026-06-21T01:51:38.2872831Z         "doc": {
2026-06-21T01:51:38.2872927Z           "complete": false,
2026-06-21T01:51:38.2873028Z           "evidence": []
2026-06-21T01:51:38.2873118Z         },
2026-06-21T01:51:38.2873203Z         "impl": {
2026-06-21T01:51:38.2873295Z           "complete": true,
2026-06-21T01:51:38.2873385Z           "evidence": [
2026-06-21T01:51:38.2873456Z             {
2026-06-21T01:51:38.2873595Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.2873695Z               "line": 183
2026-06-21T01:51:38.2873785Z             },
2026-06-21T01:51:38.2873876Z             {
2026-06-21T01:51:38.2873982Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T01:51:38.2874076Z               "line": 296
2026-06-21T01:51:38.2874172Z             }
2026-06-21T01:51:38.2874244Z           ]
2026-06-21T01:51:38.2874329Z         },
2026-06-21T01:51:38.2874415Z         "int": {
2026-06-21T01:51:38.2874521Z           "complete": false,
2026-06-21T01:51:38.2874607Z           "evidence": []
2026-06-21T01:51:38.2874686Z         },
2026-06-21T01:51:38.2874772Z         "unit": {
2026-06-21T01:51:38.2874866Z           "complete": true,
2026-06-21T01:51:38.2874961Z           "evidence": [
2026-06-21T01:51:38.2875046Z             {
2026-06-21T01:51:38.2875179Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.2875261Z               "line": 655
2026-06-21T01:51:38.2875355Z             }
2026-06-21T01:51:38.2875450Z           ]
2026-06-21T01:51:38.2875538Z         }
2026-06-21T01:51:38.2875628Z       }
2026-06-21T01:51:38.2875708Z     },
2026-06-21T01:51:38.2875804Z     {
2026-06-21T01:51:38.2875904Z       "id": "REQ-PICKER-3",
2026-06-21T01:51:38.2878443Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-21T01:51:38.2878805Z       "requiredStages": [
2026-06-21T01:51:38.2878895Z         "impl",
2026-06-21T01:51:38.2879072Z         "unit"
2026-06-21T01:51:38.2879167Z       ],
2026-06-21T01:51:38.2879253Z       "stages": {
2026-06-21T01:51:38.2879349Z         "doc": {
2026-06-21T01:51:38.2879434Z           "complete": false,
2026-06-21T01:51:38.2879534Z           "evidence": []
2026-06-21T01:51:38.2879630Z         },
2026-06-21T01:51:38.2879716Z         "impl": {
2026-06-21T01:51:38.2879810Z           "complete": true,
2026-06-21T01:51:38.2879892Z           "evidence": [
2026-06-21T01:51:38.2879979Z             {
2026-06-21T01:51:38.2880092Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T01:51:38.2880186Z               "line": 124
2026-06-21T01:51:38.2880272Z             }
2026-06-21T01:51:38.2880358Z           ]
2026-06-21T01:51:38.2880454Z         },
2026-06-21T01:51:38.2880543Z         "int": {
2026-06-21T01:51:38.2880649Z           "complete": false,
2026-06-21T01:51:38.2880735Z           "evidence": []
2026-06-21T01:51:38.2880830Z         },
2026-06-21T01:51:38.2880920Z         "unit": {
2026-06-21T01:51:38.2881017Z           "complete": true,
2026-06-21T01:51:38.2881112Z           "evidence": [
2026-06-21T01:51:38.2881196Z             {
2026-06-21T01:51:38.2881307Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T01:51:38.2881397Z               "line": 369
2026-06-21T01:51:38.2881488Z             }
2026-06-21T01:51:38.2881569Z           ]
2026-06-21T01:51:38.2881656Z         }
2026-06-21T01:51:38.2881750Z       }
2026-06-21T01:51:38.2881831Z     },
2026-06-21T01:51:38.2881918Z     {
2026-06-21T01:51:38.2882009Z       "id": "REQ-PICKER-4",
2026-06-21T01:51:38.2883959Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-21T01:51:38.2884078Z       "requiredStages": [
2026-06-21T01:51:38.2884165Z         "impl",
2026-06-21T01:51:38.2884250Z         "unit"
2026-06-21T01:51:38.2884345Z       ],
2026-06-21T01:51:38.2884431Z       "stages": {
2026-06-21T01:51:38.2884518Z         "doc": {
2026-06-21T01:51:38.2884607Z           "complete": false,
2026-06-21T01:51:38.2884698Z           "evidence": []
2026-06-21T01:51:38.2884776Z         },
2026-06-21T01:51:38.2884857Z         "impl": {
2026-06-21T01:51:38.2884950Z           "complete": true,
2026-06-21T01:51:38.2885042Z           "evidence": [
2026-06-21T01:51:38.2885124Z             {
2026-06-21T01:51:38.2885251Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2885337Z               "line": 353
2026-06-21T01:51:38.2885418Z             },
2026-06-21T01:51:38.2885508Z             {
2026-06-21T01:51:38.2885630Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T01:51:38.2885715Z               "line": 105
2026-06-21T01:51:38.2885802Z             }
2026-06-21T01:51:38.2885888Z           ]
2026-06-21T01:51:38.2885968Z         },
2026-06-21T01:51:38.2886044Z         "int": {
2026-06-21T01:51:38.2886145Z           "complete": false,
2026-06-21T01:51:38.2886240Z           "evidence": []
2026-06-21T01:51:38.2886325Z         },
2026-06-21T01:51:38.2886417Z         "unit": {
2026-06-21T01:51:38.2886507Z           "complete": true,
2026-06-21T01:51:38.2886602Z           "evidence": [
2026-06-21T01:51:38.2886688Z             {
2026-06-21T01:51:38.2886941Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2887037Z               "line": 1246
2026-06-21T01:51:38.2887217Z             },
2026-06-21T01:51:38.2887318Z             {
2026-06-21T01:51:38.2887433Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T01:51:38.2887532Z               "line": 427
2026-06-21T01:51:38.2887613Z             }
2026-06-21T01:51:38.2887705Z           ]
2026-06-21T01:51:38.2887794Z         }
2026-06-21T01:51:38.2887875Z       }
2026-06-21T01:51:38.2887965Z     },
2026-06-21T01:51:38.2888046Z     {
2026-06-21T01:51:38.2888144Z       "id": "REQ-PICKER-5",
2026-06-21T01:51:38.2891314Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-21T01:51:38.2891442Z       "requiredStages": [
2026-06-21T01:51:38.2891529Z         "impl",
2026-06-21T01:51:38.2891620Z         "unit"
2026-06-21T01:51:38.2891700Z       ],
2026-06-21T01:51:38.2891791Z       "stages": {
2026-06-21T01:51:38.2891877Z         "doc": {
2026-06-21T01:51:38.2891967Z           "complete": false,
2026-06-21T01:51:38.2892071Z           "evidence": []
2026-06-21T01:51:38.2892154Z         },
2026-06-21T01:51:38.2892249Z         "impl": {
2026-06-21T01:51:38.2892335Z           "complete": true,
2026-06-21T01:51:38.2896753Z           "evidence": [
2026-06-21T01:51:38.2896871Z             {
2026-06-21T01:51:38.2897001Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2897092Z               "line": 1802
2026-06-21T01:51:38.2897171Z             }
2026-06-21T01:51:38.2897263Z           ]
2026-06-21T01:51:38.2897344Z         },
2026-06-21T01:51:38.2897425Z         "int": {
2026-06-21T01:51:38.2897520Z           "complete": false,
2026-06-21T01:51:38.2897621Z           "evidence": []
2026-06-21T01:51:38.2897706Z         },
2026-06-21T01:51:38.2897787Z         "unit": {
2026-06-21T01:51:38.2897888Z           "complete": true,
2026-06-21T01:51:38.2897974Z           "evidence": [
2026-06-21T01:51:38.2898063Z             {
2026-06-21T01:51:38.2898174Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.2898285Z               "line": 7526
2026-06-21T01:51:38.2898373Z             }
2026-06-21T01:51:38.2898463Z           ]
2026-06-21T01:51:38.2898553Z         }
2026-06-21T01:51:38.2898634Z       }
2026-06-21T01:51:38.2898723Z     },
2026-06-21T01:51:38.2898799Z     {
2026-06-21T01:51:38.2898919Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-21T01:51:38.2900630Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-21T01:51:38.2900740Z       "requiredStages": [],
2026-06-21T01:51:38.2900832Z       "stages": {
2026-06-21T01:51:38.2900921Z         "doc": {
2026-06-21T01:51:38.2901273Z           "complete": false,
2026-06-21T01:51:38.2901363Z           "evidence": []
2026-06-21T01:51:38.2901555Z         },
2026-06-21T01:51:38.2901645Z         "impl": {
2026-06-21T01:51:38.2901740Z           "complete": false,
2026-06-21T01:51:38.2901837Z           "evidence": []
2026-06-21T01:51:38.2901917Z         },
2026-06-21T01:51:38.2901997Z         "int": {
2026-06-21T01:51:38.2902094Z           "complete": false,
2026-06-21T01:51:38.2902184Z           "evidence": []
2026-06-21T01:51:38.2902269Z         },
2026-06-21T01:51:38.2902356Z         "unit": {
2026-06-21T01:51:38.2902451Z           "complete": false,
2026-06-21T01:51:38.2902537Z           "evidence": []
2026-06-21T01:51:38.2902627Z         }
2026-06-21T01:51:38.2902709Z       }
2026-06-21T01:51:38.2902790Z     },
2026-06-21T01:51:38.2902880Z     {
2026-06-21T01:51:38.2902980Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-21T01:51:38.2904132Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-21T01:51:38.2904245Z       "requiredStages": [
2026-06-21T01:51:38.2904332Z         "impl",
2026-06-21T01:51:38.2904422Z         "unit"
2026-06-21T01:51:38.2904512Z       ],
2026-06-21T01:51:38.2904602Z       "stages": {
2026-06-21T01:51:38.2904689Z         "doc": {
2026-06-21T01:51:38.2904789Z           "complete": false,
2026-06-21T01:51:38.2904883Z           "evidence": []
2026-06-21T01:51:38.2904966Z         },
2026-06-21T01:51:38.2905056Z         "impl": {
2026-06-21T01:51:38.2905142Z           "complete": true,
2026-06-21T01:51:38.2905242Z           "evidence": [
2026-06-21T01:51:38.2905319Z             {
2026-06-21T01:51:38.2905447Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T01:51:38.2905547Z               "line": 275
2026-06-21T01:51:38.2905629Z             }
2026-06-21T01:51:38.2905723Z           ]
2026-06-21T01:51:38.2905795Z         },
2026-06-21T01:51:38.2905881Z         "int": {
2026-06-21T01:51:38.2905972Z           "complete": false,
2026-06-21T01:51:38.2906057Z           "evidence": []
2026-06-21T01:51:38.2906147Z         },
2026-06-21T01:51:38.2906240Z         "unit": {
2026-06-21T01:51:38.2906339Z           "complete": true,
2026-06-21T01:51:38.2906418Z           "evidence": [
2026-06-21T01:51:38.2906513Z             {
2026-06-21T01:51:38.2906633Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T01:51:38.2906726Z               "line": 400
2026-06-21T01:51:38.2906816Z             }
2026-06-21T01:51:38.2906902Z           ]
2026-06-21T01:51:38.2906999Z         }
2026-06-21T01:51:38.2907078Z       }
2026-06-21T01:51:38.2907174Z     },
2026-06-21T01:51:38.2907256Z     {
2026-06-21T01:51:38.2907375Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-21T01:51:38.2909109Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-21T01:51:38.2909213Z       "requiredStages": [
2026-06-21T01:51:38.2909302Z         "impl",
2026-06-21T01:51:38.2909382Z         "unit"
2026-06-21T01:51:38.2909479Z       ],
2026-06-21T01:51:38.2909579Z       "stages": {
2026-06-21T01:51:38.2909664Z         "doc": {
2026-06-21T01:51:38.2909765Z           "complete": false,
2026-06-21T01:51:38.2909856Z           "evidence": []
2026-06-21T01:51:38.2909945Z         },
2026-06-21T01:51:38.2910151Z         "impl": {
2026-06-21T01:51:38.2910260Z           "complete": true,
2026-06-21T01:51:38.2910346Z           "evidence": [
2026-06-21T01:51:38.2910523Z             {
2026-06-21T01:51:38.2910652Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.2910739Z               "line": 654
2026-06-21T01:51:38.2910828Z             }
2026-06-21T01:51:38.2910914Z           ]
2026-06-21T01:51:38.2911005Z         },
2026-06-21T01:51:38.2911092Z         "int": {
2026-06-21T01:51:38.2911180Z           "complete": false,
2026-06-21T01:51:38.2911277Z           "evidence": []
2026-06-21T01:51:38.2911363Z         },
2026-06-21T01:51:38.2911448Z         "unit": {
2026-06-21T01:51:38.2911539Z           "complete": true,
2026-06-21T01:51:38.2911625Z           "evidence": [
2026-06-21T01:51:38.2911712Z             {
2026-06-21T01:51:38.2911824Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.2911918Z               "line": 1078
2026-06-21T01:51:38.2912005Z             },
2026-06-21T01:51:38.2912097Z             {
2026-06-21T01:51:38.2912210Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.2912300Z               "line": 1092
2026-06-21T01:51:38.2912382Z             }
2026-06-21T01:51:38.2912472Z           ]
2026-06-21T01:51:38.2912567Z         }
2026-06-21T01:51:38.2912645Z       }
2026-06-21T01:51:38.2912735Z     },
2026-06-21T01:51:38.2912825Z     {
2026-06-21T01:51:38.2912930Z       "id": "REQ-PICKER-UX-V013",
2026-06-21T01:51:38.2914553Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-21T01:51:38.2914653Z       "requiredStages": [],
2026-06-21T01:51:38.2914744Z       "stages": {
2026-06-21T01:51:38.2914829Z         "doc": {
2026-06-21T01:51:38.2914920Z           "complete": false,
2026-06-21T01:51:38.2915015Z           "evidence": []
2026-06-21T01:51:38.2915100Z         },
2026-06-21T01:51:38.2915187Z         "impl": {
2026-06-21T01:51:38.2915278Z           "complete": false,
2026-06-21T01:51:38.2915377Z           "evidence": []
2026-06-21T01:51:38.2915463Z         },
2026-06-21T01:51:38.2915550Z         "int": {
2026-06-21T01:51:38.2915649Z           "complete": false,
2026-06-21T01:51:38.2915730Z           "evidence": []
2026-06-21T01:51:38.2915811Z         },
2026-06-21T01:51:38.2915903Z         "unit": {
2026-06-21T01:51:38.2916002Z           "complete": false,
2026-06-21T01:51:38.2916097Z           "evidence": []
2026-06-21T01:51:38.2916180Z         }
2026-06-21T01:51:38.2916269Z       }
2026-06-21T01:51:38.2916351Z     },
2026-06-21T01:51:38.2916446Z     {
2026-06-21T01:51:38.2916537Z       "id": "REQ-PRES-1",
2026-06-21T01:51:38.2917883Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-21T01:51:38.2917986Z       "requiredStages": [
2026-06-21T01:51:38.2918064Z         "impl",
2026-06-21T01:51:38.2918159Z         "unit",
2026-06-21T01:51:38.2918245Z         "int"
2026-06-21T01:51:38.2918335Z       ],
2026-06-21T01:51:38.2918422Z       "stages": {
2026-06-21T01:51:38.2918512Z         "doc": {
2026-06-21T01:51:38.2918607Z           "complete": true,
2026-06-21T01:51:38.2918693Z           "evidence": [
2026-06-21T01:51:38.2918912Z             {
2026-06-21T01:51:38.2919090Z               "path": "docs/DEFERRED.md",
2026-06-21T01:51:38.2919188Z               "line": 11
2026-06-21T01:51:38.2919395Z             }
2026-06-21T01:51:38.2919480Z           ]
2026-06-21T01:51:38.2919564Z         },
2026-06-21T01:51:38.2919645Z         "impl": {
2026-06-21T01:51:38.2919750Z           "complete": true,
2026-06-21T01:51:38.2919839Z           "evidence": [
2026-06-21T01:51:38.2919924Z             {
2026-06-21T01:51:38.2920054Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:51:38.2920144Z               "line": 515
2026-06-21T01:51:38.2920229Z             },
2026-06-21T01:51:38.2920316Z             {
2026-06-21T01:51:38.2920435Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:51:38.2920510Z               "line": 567
2026-06-21T01:51:38.2920611Z             },
2026-06-21T01:51:38.2920702Z             {
2026-06-21T01:51:38.2920830Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2920926Z               "line": 188
2026-06-21T01:51:38.2921003Z             },
2026-06-21T01:51:38.2921083Z             {
2026-06-21T01:51:38.2921197Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2921299Z               "line": 214
2026-06-21T01:51:38.2921388Z             },
2026-06-21T01:51:38.2921474Z             {
2026-06-21T01:51:38.2921599Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T01:51:38.2921689Z               "line": 28
2026-06-21T01:51:38.2921775Z             },
2026-06-21T01:51:38.2921856Z             {
2026-06-21T01:51:38.2921981Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T01:51:38.2922069Z               "line": 105
2026-06-21T01:51:38.2922156Z             },
2026-06-21T01:51:38.2922238Z             {
2026-06-21T01:51:38.2922351Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T01:51:38.2922441Z               "line": 161
2026-06-21T01:51:38.2922527Z             },
2026-06-21T01:51:38.2922613Z             {
2026-06-21T01:51:38.2922737Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T01:51:38.2922832Z               "line": 180
2026-06-21T01:51:38.2922919Z             },
2026-06-21T01:51:38.2923000Z             {
2026-06-21T01:51:38.2923137Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2923234Z               "line": 421
2026-06-21T01:51:38.2923314Z             },
2026-06-21T01:51:38.2923404Z             {
2026-06-21T01:51:38.2923529Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:51:38.2923619Z               "line": 289
2026-06-21T01:51:38.2923700Z             },
2026-06-21T01:51:38.2923795Z             {
2026-06-21T01:51:38.2923920Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:51:38.2924005Z               "line": 336
2026-06-21T01:51:38.2924095Z             },
2026-06-21T01:51:38.2924173Z             {
2026-06-21T01:51:38.2924295Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:51:38.2924382Z               "line": 362
2026-06-21T01:51:38.2924473Z             },
2026-06-21T01:51:38.2924563Z             {
2026-06-21T01:51:38.2924681Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2924776Z               "line": 100
2026-06-21T01:51:38.2924853Z             }
2026-06-21T01:51:38.2924946Z           ]
2026-06-21T01:51:38.2925031Z         },
2026-06-21T01:51:38.2925122Z         "int": {
2026-06-21T01:51:38.2925223Z           "complete": true,
2026-06-21T01:51:38.2925313Z           "evidence": [
2026-06-21T01:51:38.2925404Z             {
2026-06-21T01:51:38.2925533Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:51:38.2925618Z               "line": 563
2026-06-21T01:51:38.2925698Z             },
2026-06-21T01:51:38.2925791Z             {
2026-06-21T01:51:38.2925904Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.2925994Z               "line": 747
2026-06-21T01:51:38.2926205Z             },
2026-06-21T01:51:38.2926290Z             {
2026-06-21T01:51:38.2926416Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.2926586Z               "line": 1165
2026-06-21T01:51:38.2926682Z             }
2026-06-21T01:51:38.2926768Z           ]
2026-06-21T01:51:38.2926853Z         },
2026-06-21T01:51:38.2926958Z         "unit": {
2026-06-21T01:51:38.2927050Z           "complete": true,
2026-06-21T01:51:38.2927144Z           "evidence": [
2026-06-21T01:51:38.2927235Z             {
2026-06-21T01:51:38.2927355Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.2927459Z               "line": 674
2026-06-21T01:51:38.2927544Z             },
2026-06-21T01:51:38.2927639Z             {
2026-06-21T01:51:38.2927757Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T01:51:38.2927861Z               "line": 238
2026-06-21T01:51:38.2927946Z             },
2026-06-21T01:51:38.2928037Z             {
2026-06-21T01:51:38.2928152Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T01:51:38.2928237Z               "line": 269
2026-06-21T01:51:38.2928338Z             },
2026-06-21T01:51:38.2928414Z             {
2026-06-21T01:51:38.2928537Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T01:51:38.2928634Z               "line": 305
2026-06-21T01:51:38.2928719Z             },
2026-06-21T01:51:38.2928810Z             {
2026-06-21T01:51:38.2928924Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T01:51:38.2929115Z               "line": 336
2026-06-21T01:51:38.2929200Z             },
2026-06-21T01:51:38.2929292Z             {
2026-06-21T01:51:38.2929415Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.2929505Z               "line": 1217
2026-06-21T01:51:38.2929593Z             },
2026-06-21T01:51:38.2929664Z             {
2026-06-21T01:51:38.2929772Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.2929864Z               "line": 1163
2026-06-21T01:51:38.2929945Z             }
2026-06-21T01:51:38.2930031Z           ]
2026-06-21T01:51:38.2930115Z         }
2026-06-21T01:51:38.2930205Z       }
2026-06-21T01:51:38.2930291Z     },
2026-06-21T01:51:38.2930380Z     {
2026-06-21T01:51:38.2930470Z       "id": "REQ-RC-1",
2026-06-21T01:51:38.2932508Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-21T01:51:38.2932611Z       "requiredStages": [
2026-06-21T01:51:38.2932692Z         "impl",
2026-06-21T01:51:38.2932789Z         "unit",
2026-06-21T01:51:38.2932879Z         "int"
2026-06-21T01:51:38.2932963Z       ],
2026-06-21T01:51:38.2933053Z       "stages": {
2026-06-21T01:51:38.2933135Z         "doc": {
2026-06-21T01:51:38.2933236Z           "complete": false,
2026-06-21T01:51:38.2933320Z           "evidence": []
2026-06-21T01:51:38.2933411Z         },
2026-06-21T01:51:38.2933498Z         "impl": {
2026-06-21T01:51:38.2933583Z           "complete": true,
2026-06-21T01:51:38.2933673Z           "evidence": [
2026-06-21T01:51:38.2933760Z             {
2026-06-21T01:51:38.2933884Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.2933969Z               "line": 944
2026-06-21T01:51:38.2934060Z             },
2026-06-21T01:51:38.2934151Z             {
2026-06-21T01:51:38.2934269Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.2934365Z               "line": 1926
2026-06-21T01:51:38.2934565Z             },
2026-06-21T01:51:38.2934646Z             {
2026-06-21T01:51:38.2934865Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.2934961Z               "line": 967
2026-06-21T01:51:38.2935048Z             },
2026-06-21T01:51:38.2935138Z             {
2026-06-21T01:51:38.2935265Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.2935346Z               "line": 1001
2026-06-21T01:51:38.2935432Z             },
2026-06-21T01:51:38.2935506Z             {
2026-06-21T01:51:38.2935610Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2935707Z               "line": 22
2026-06-21T01:51:38.2935793Z             },
2026-06-21T01:51:38.2935878Z             {
2026-06-21T01:51:38.2935983Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2936074Z               "line": 701
2026-06-21T01:51:38.2936164Z             }
2026-06-21T01:51:38.2936258Z           ]
2026-06-21T01:51:38.2936351Z         },
2026-06-21T01:51:38.2936441Z         "int": {
2026-06-21T01:51:38.2936545Z           "complete": true,
2026-06-21T01:51:38.2936642Z           "evidence": [
2026-06-21T01:51:38.2936736Z             {
2026-06-21T01:51:38.2936855Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:51:38.2936951Z               "line": 258
2026-06-21T01:51:38.2937041Z             },
2026-06-21T01:51:38.2937127Z             {
2026-06-21T01:51:38.2937247Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:51:38.2937338Z               "line": 285
2026-06-21T01:51:38.2937427Z             },
2026-06-21T01:51:38.2937532Z             {
2026-06-21T01:51:38.2937653Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:51:38.2937737Z               "line": 413
2026-06-21T01:51:38.2937824Z             }
2026-06-21T01:51:38.2937915Z           ]
2026-06-21T01:51:38.2938000Z         },
2026-06-21T01:51:38.2938123Z         "unit": {
2026-06-21T01:51:38.2938261Z           "complete": true,
2026-06-21T01:51:38.2938416Z           "evidence": [
2026-06-21T01:51:38.2938501Z             {
2026-06-21T01:51:38.2938631Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.2938731Z               "line": 1327
2026-06-21T01:51:38.2938816Z             },
2026-06-21T01:51:38.2939083Z             {
2026-06-21T01:51:38.2939194Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2939299Z               "line": 1133
2026-06-21T01:51:38.2939388Z             },
2026-06-21T01:51:38.2939475Z             {
2026-06-21T01:51:38.2939575Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2939665Z               "line": 1162
2026-06-21T01:51:38.2939760Z             },
2026-06-21T01:51:38.2939843Z             {
2026-06-21T01:51:38.2939947Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2940047Z               "line": 1175
2026-06-21T01:51:38.2940124Z             }
2026-06-21T01:51:38.2940205Z           ]
2026-06-21T01:51:38.2940290Z         }
2026-06-21T01:51:38.2940381Z       }
2026-06-21T01:51:38.2940468Z     },
2026-06-21T01:51:38.2940553Z     {
2026-06-21T01:51:38.2940675Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-21T01:51:38.2946576Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-21T01:51:38.2946953Z       "requiredStages": [
2026-06-21T01:51:38.2947048Z         "doc",
2026-06-21T01:51:38.2947134Z         "impl",
2026-06-21T01:51:38.2947221Z         "unit"
2026-06-21T01:51:38.2947306Z       ],
2026-06-21T01:51:38.2947396Z       "stages": {
2026-06-21T01:51:38.2947487Z         "doc": {
2026-06-21T01:51:38.2947574Z           "complete": true,
2026-06-21T01:51:38.2947669Z           "evidence": [
2026-06-21T01:51:38.2947754Z             {
2026-06-21T01:51:38.2947855Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.2947944Z               "line": 345
2026-06-21T01:51:38.2948031Z             },
2026-06-21T01:51:38.2948122Z             {
2026-06-21T01:51:38.2948218Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.2948316Z               "line": 440
2026-06-21T01:51:38.2948393Z             }
2026-06-21T01:51:38.2948485Z           ]
2026-06-21T01:51:38.2948570Z         },
2026-06-21T01:51:38.2948654Z         "impl": {
2026-06-21T01:51:38.2948759Z           "complete": true,
2026-06-21T01:51:38.2948845Z           "evidence": [
2026-06-21T01:51:38.2948929Z             {
2026-06-21T01:51:38.2949139Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2949230Z               "line": 226
2026-06-21T01:51:38.2949310Z             },
2026-06-21T01:51:38.2949400Z             {
2026-06-21T01:51:38.2949506Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2949596Z               "line": 285
2026-06-21T01:51:38.2949686Z             },
2026-06-21T01:51:38.2949764Z             {
2026-06-21T01:51:38.2949873Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2949963Z               "line": 300
2026-06-21T01:51:38.2950049Z             },
2026-06-21T01:51:38.2950135Z             {
2026-06-21T01:51:38.2950240Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2950335Z               "line": 315
2026-06-21T01:51:38.2950427Z             },
2026-06-21T01:51:38.2950516Z             {
2026-06-21T01:51:38.2950612Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2950708Z               "line": 364
2026-06-21T01:51:38.2950798Z             }
2026-06-21T01:51:38.2950883Z           ]
2026-06-21T01:51:38.2950974Z         },
2026-06-21T01:51:38.2951057Z         "int": {
2026-06-21T01:51:38.2951165Z           "complete": false,
2026-06-21T01:51:38.2951259Z           "evidence": []
2026-06-21T01:51:38.2951349Z         },
2026-06-21T01:51:38.2951444Z         "unit": {
2026-06-21T01:51:38.2951538Z           "complete": true,
2026-06-21T01:51:38.2951638Z           "evidence": [
2026-06-21T01:51:38.2951719Z             {
2026-06-21T01:51:38.2951829Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2951919Z               "line": 1190
2026-06-21T01:51:38.2952006Z             },
2026-06-21T01:51:38.2952092Z             {
2026-06-21T01:51:38.2952196Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2952449Z               "line": 1305
2026-06-21T01:51:38.2952530Z             }
2026-06-21T01:51:38.2952631Z           ]
2026-06-21T01:51:38.2952807Z         }
2026-06-21T01:51:38.2952902Z       }
2026-06-21T01:51:38.2952993Z     },
2026-06-21T01:51:38.2953083Z     {
2026-06-21T01:51:38.2953187Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-21T01:51:38.2957523Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-21T01:51:38.2957660Z       "requiredStages": [
2026-06-21T01:51:38.2957747Z         "doc",
2026-06-21T01:51:38.2957833Z         "impl",
2026-06-21T01:51:38.2957928Z         "unit"
2026-06-21T01:51:38.2958018Z       ],
2026-06-21T01:51:38.2958105Z       "stages": {
2026-06-21T01:51:38.2958204Z         "doc": {
2026-06-21T01:51:38.2958304Z           "complete": true,
2026-06-21T01:51:38.2958391Z           "evidence": [
2026-06-21T01:51:38.2958482Z             {
2026-06-21T01:51:38.2958586Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.2958682Z               "line": 461
2026-06-21T01:51:38.2958764Z             }
2026-06-21T01:51:38.2958847Z           ]
2026-06-21T01:51:38.2959045Z         },
2026-06-21T01:51:38.2959135Z         "impl": {
2026-06-21T01:51:38.2959238Z           "complete": true,
2026-06-21T01:51:38.2959329Z           "evidence": [
2026-06-21T01:51:38.2959429Z             {
2026-06-21T01:51:38.2959531Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2959616Z               "line": 421
2026-06-21T01:51:38.2959699Z             },
2026-06-21T01:51:38.2959780Z             {
2026-06-21T01:51:38.2959879Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2959965Z               "line": 437
2026-06-21T01:51:38.2960056Z             }
2026-06-21T01:51:38.2960142Z           ]
2026-06-21T01:51:38.2960232Z         },
2026-06-21T01:51:38.2960319Z         "int": {
2026-06-21T01:51:38.2960409Z           "complete": false,
2026-06-21T01:51:38.2960504Z           "evidence": []
2026-06-21T01:51:38.2960590Z         },
2026-06-21T01:51:38.2960682Z         "unit": {
2026-06-21T01:51:38.2960771Z           "complete": true,
2026-06-21T01:51:38.2960862Z           "evidence": [
2026-06-21T01:51:38.2960948Z             {
2026-06-21T01:51:38.2961053Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2961138Z               "line": 1440
2026-06-21T01:51:38.2961224Z             },
2026-06-21T01:51:38.2961307Z             {
2026-06-21T01:51:38.2961400Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2961491Z               "line": 1459
2026-06-21T01:51:38.2961588Z             },
2026-06-21T01:51:38.2961791Z             {
2026-06-21T01:51:38.2961891Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2962065Z               "line": 1471
2026-06-21T01:51:38.2962155Z             },
2026-06-21T01:51:38.2962246Z             {
2026-06-21T01:51:38.2962347Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2962441Z               "line": 1499
2026-06-21T01:51:38.2962527Z             }
2026-06-21T01:51:38.2962619Z           ]
2026-06-21T01:51:38.2962700Z         }
2026-06-21T01:51:38.2962789Z       }
2026-06-21T01:51:38.2962871Z     },
2026-06-21T01:51:38.2962966Z     {
2026-06-21T01:51:38.2963080Z       "id": "REQ-RC-WIN-PASTE",
2026-06-21T01:51:38.2967807Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-21T01:51:38.2967925Z       "requiredStages": [
2026-06-21T01:51:38.2968022Z         "doc",
2026-06-21T01:51:38.2968107Z         "impl",
2026-06-21T01:51:38.2968197Z         "unit"
2026-06-21T01:51:38.2968278Z       ],
2026-06-21T01:51:38.2968375Z       "stages": {
2026-06-21T01:51:38.2968455Z         "doc": {
2026-06-21T01:51:38.2968554Z           "complete": true,
2026-06-21T01:51:38.2968637Z           "evidence": [
2026-06-21T01:51:38.2968727Z             {
2026-06-21T01:51:38.2968831Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:51:38.2968912Z               "line": 447
2026-06-21T01:51:38.2969098Z             }
2026-06-21T01:51:38.2969174Z           ]
2026-06-21T01:51:38.2969267Z         },
2026-06-21T01:51:38.2969352Z         "impl": {
2026-06-21T01:51:38.2969456Z           "complete": true,
2026-06-21T01:51:38.2969552Z           "evidence": [
2026-06-21T01:51:38.2969639Z             {
2026-06-21T01:51:38.2969751Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2969846Z               "line": 395
2026-06-21T01:51:38.2969936Z             },
2026-06-21T01:51:38.2970026Z             {
2026-06-21T01:51:38.2970134Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2970230Z               "line": 411
2026-06-21T01:51:38.2970316Z             },
2026-06-21T01:51:38.2970411Z             {
2026-06-21T01:51:38.2970501Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2970603Z               "line": 454
2026-06-21T01:51:38.2970693Z             },
2026-06-21T01:51:38.2970773Z             {
2026-06-21T01:51:38.2970879Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2970964Z               "line": 468
2026-06-21T01:51:38.2971055Z             },
2026-06-21T01:51:38.2971242Z             {
2026-06-21T01:51:38.2971360Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2971542Z               "line": 479
2026-06-21T01:51:38.2971631Z             }
2026-06-21T01:51:38.2971717Z           ]
2026-06-21T01:51:38.2971804Z         },
2026-06-21T01:51:38.2971886Z         "int": {
2026-06-21T01:51:38.2971974Z           "complete": false,
2026-06-21T01:51:38.2972066Z           "evidence": []
2026-06-21T01:51:38.2972152Z         },
2026-06-21T01:51:38.2972238Z         "unit": {
2026-06-21T01:51:38.2972327Z           "complete": true,
2026-06-21T01:51:38.2972417Z           "evidence": [
2026-06-21T01:51:38.2972503Z             {
2026-06-21T01:51:38.2972606Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2972701Z               "line": 1381
2026-06-21T01:51:38.2972792Z             },
2026-06-21T01:51:38.2972874Z             {
2026-06-21T01:51:38.2972983Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2973068Z               "line": 1402
2026-06-21T01:51:38.2973164Z             },
2026-06-21T01:51:38.2973241Z             {
2026-06-21T01:51:38.2973340Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2973431Z               "line": 1423
2026-06-21T01:51:38.2973512Z             }
2026-06-21T01:51:38.2973602Z           ]
2026-06-21T01:51:38.2973683Z         }
2026-06-21T01:51:38.2973770Z       }
2026-06-21T01:51:38.2973855Z     },
2026-06-21T01:51:38.2973936Z     {
2026-06-21T01:51:38.2974036Z       "id": "REQ-RCVIEW-1",
2026-06-21T01:51:38.2978563Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-21T01:51:38.2978686Z       "requiredStages": [
2026-06-21T01:51:38.2978766Z         "doc",
2026-06-21T01:51:38.2978853Z         "impl",
2026-06-21T01:51:38.2979034Z         "unit",
2026-06-21T01:51:38.2979129Z         "int"
2026-06-21T01:51:38.2979225Z       ],
2026-06-21T01:51:38.2979306Z       "stages": {
2026-06-21T01:51:38.2979396Z         "doc": {
2026-06-21T01:51:38.2979492Z           "complete": true,
2026-06-21T01:51:38.2979583Z           "evidence": [
2026-06-21T01:51:38.2979667Z             {
2026-06-21T01:51:38.2979763Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.2979860Z               "line": 342
2026-06-21T01:51:38.2979950Z             }
2026-06-21T01:51:38.2980036Z           ]
2026-06-21T01:51:38.2980122Z         },
2026-06-21T01:51:38.2980213Z         "impl": {
2026-06-21T01:51:38.2980297Z           "complete": true,
2026-06-21T01:51:38.2980396Z           "evidence": [
2026-06-21T01:51:38.2980492Z             {
2026-06-21T01:51:38.2980610Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T01:51:38.2980814Z               "line": 354
2026-06-21T01:51:38.2981028Z             },
2026-06-21T01:51:38.2981124Z             {
2026-06-21T01:51:38.2981244Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.2981338Z               "line": 574
2026-06-21T01:51:38.2981420Z             },
2026-06-21T01:51:38.2981506Z             {
2026-06-21T01:51:38.2981629Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.2981705Z               "line": 585
2026-06-21T01:51:38.2981792Z             },
2026-06-21T01:51:38.2981882Z             {
2026-06-21T01:51:38.2982006Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T01:51:38.2982102Z               "line": 41
2026-06-21T01:51:38.2982187Z             },
2026-06-21T01:51:38.2982277Z             {
2026-06-21T01:51:38.2982388Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T01:51:38.2982488Z               "line": 62
2026-06-21T01:51:38.2982573Z             },
2026-06-21T01:51:38.2982659Z             {
2026-06-21T01:51:38.2982784Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.2982878Z               "line": 309
2026-06-21T01:51:38.2982967Z             },
2026-06-21T01:51:38.2983049Z             {
2026-06-21T01:51:38.2983157Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:51:38.2983233Z               "line": 701
2026-06-21T01:51:38.2983318Z             }
2026-06-21T01:51:38.2983405Z           ]
2026-06-21T01:51:38.2983491Z         },
2026-06-21T01:51:38.2983576Z         "int": {
2026-06-21T01:51:38.2983662Z           "complete": true,
2026-06-21T01:51:38.2983753Z           "evidence": [
2026-06-21T01:51:38.2983829Z             {
2026-06-21T01:51:38.2983957Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:51:38.2984054Z               "line": 913
2026-06-21T01:51:38.2984135Z             },
2026-06-21T01:51:38.2984224Z             {
2026-06-21T01:51:38.2984340Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:51:38.2984434Z               "line": 953
2026-06-21T01:51:38.2984524Z             },
2026-06-21T01:51:38.2984601Z             {
2026-06-21T01:51:38.2984725Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:51:38.2984821Z               "line": 1000
2026-06-21T01:51:38.2984901Z             },
2026-06-21T01:51:38.2984979Z             {
2026-06-21T01:51:38.2985097Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:51:38.2985193Z               "line": 1112
2026-06-21T01:51:38.2985279Z             }
2026-06-21T01:51:38.2985360Z           ]
2026-06-21T01:51:38.2985435Z         },
2026-06-21T01:51:38.2985512Z         "unit": {
2026-06-21T01:51:38.2985604Z           "complete": true,
2026-06-21T01:51:38.2985703Z           "evidence": [
2026-06-21T01:51:38.2985797Z             {
2026-06-21T01:51:38.2985902Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T01:51:38.2985993Z               "line": 175
2026-06-21T01:51:38.2986083Z             },
2026-06-21T01:51:38.2986168Z             {
2026-06-21T01:51:38.2986284Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T01:51:38.2986379Z               "line": 195
2026-06-21T01:51:38.2986478Z             }
2026-06-21T01:51:38.2986561Z           ]
2026-06-21T01:51:38.2986656Z         }
2026-06-21T01:51:38.2986736Z       }
2026-06-21T01:51:38.2986832Z     },
2026-06-21T01:51:38.2986918Z     {
2026-06-21T01:51:38.2987018Z       "id": "REQ-REACH-1",
2026-06-21T01:51:38.2987180Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-21T01:51:38.2987271Z       "requiredStages": [
2026-06-21T01:51:38.2987371Z         "impl",
2026-06-21T01:51:38.2987451Z         "unit",
2026-06-21T01:51:38.2987544Z         "int"
2026-06-21T01:51:38.2987628Z       ],
2026-06-21T01:51:38.2987723Z       "stages": {
2026-06-21T01:51:38.2987810Z         "doc": {
2026-06-21T01:51:38.2987896Z           "complete": false,
2026-06-21T01:51:38.2988090Z           "evidence": []
2026-06-21T01:51:38.2988166Z         },
2026-06-21T01:51:38.2988260Z         "impl": {
2026-06-21T01:51:38.2988435Z           "complete": true,
2026-06-21T01:51:38.2993335Z           "evidence": [
2026-06-21T01:51:38.2993452Z             {
2026-06-21T01:51:38.2993609Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.2993713Z               "line": 574
2026-06-21T01:51:38.2993798Z             },
2026-06-21T01:51:38.2993878Z             {
2026-06-21T01:51:38.2993998Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T01:51:38.2994098Z               "line": 76
2026-06-21T01:51:38.2994183Z             },
2026-06-21T01:51:38.2994271Z             {
2026-06-21T01:51:38.2994394Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T01:51:38.2994484Z               "line": 222
2026-06-21T01:51:38.2994571Z             },
2026-06-21T01:51:38.2994646Z             {
2026-06-21T01:51:38.2994765Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T01:51:38.2994881Z               "line": 422
2026-06-21T01:51:38.2994961Z             },
2026-06-21T01:51:38.2995052Z             {
2026-06-21T01:51:38.2995151Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T01:51:38.2995244Z               "line": 529
2026-06-21T01:51:38.2995323Z             },
2026-06-21T01:51:38.2995409Z             {
2026-06-21T01:51:38.2995530Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T01:51:38.2995615Z               "line": 39
2026-06-21T01:51:38.2995705Z             },
2026-06-21T01:51:38.2995781Z             {
2026-06-21T01:51:38.2995902Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.2995990Z               "line": 301
2026-06-21T01:51:38.2996082Z             },
2026-06-21T01:51:38.2996159Z             {
2026-06-21T01:51:38.2996272Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T01:51:38.2996362Z               "line": 88
2026-06-21T01:51:38.2996448Z             },
2026-06-21T01:51:38.2996534Z             {
2026-06-21T01:51:38.2996643Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T01:51:38.2996733Z               "line": 98
2026-06-21T01:51:38.2996820Z             },
2026-06-21T01:51:38.2996896Z             {
2026-06-21T01:51:38.2997020Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.2997116Z               "line": 233
2026-06-21T01:51:38.2997221Z             }
2026-06-21T01:51:38.2997301Z           ]
2026-06-21T01:51:38.2997397Z         },
2026-06-21T01:51:38.2997488Z         "int": {
2026-06-21T01:51:38.2997588Z           "complete": true,
2026-06-21T01:51:38.2997687Z           "evidence": [
2026-06-21T01:51:38.2997774Z             {
2026-06-21T01:51:38.2997912Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:51:38.2997998Z               "line": 415
2026-06-21T01:51:38.2998099Z             },
2026-06-21T01:51:38.2998188Z             {
2026-06-21T01:51:38.2998307Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:51:38.2998404Z               "line": 520
2026-06-21T01:51:38.2998484Z             },
2026-06-21T01:51:38.2998574Z             {
2026-06-21T01:51:38.2998688Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.2998783Z               "line": 998
2026-06-21T01:51:38.2998867Z             },
2026-06-21T01:51:38.2999029Z             {
2026-06-21T01:51:38.2999154Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.2999248Z               "line": 1383
2026-06-21T01:51:38.2999329Z             }
2026-06-21T01:51:38.2999411Z           ]
2026-06-21T01:51:38.2999506Z         },
2026-06-21T01:51:38.2999586Z         "unit": {
2026-06-21T01:51:38.2999668Z           "complete": true,
2026-06-21T01:51:38.2999768Z           "evidence": [
2026-06-21T01:51:38.2999853Z             {
2026-06-21T01:51:38.2999973Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T01:51:38.3000059Z               "line": 639
2026-06-21T01:51:38.3000145Z             },
2026-06-21T01:51:38.3000393Z             {
2026-06-21T01:51:38.3000507Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T01:51:38.3000689Z               "line": 660
2026-06-21T01:51:38.3000774Z             },
2026-06-21T01:51:38.3000860Z             {
2026-06-21T01:51:38.3000990Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:51:38.3001079Z               "line": 768
2026-06-21T01:51:38.3001165Z             },
2026-06-21T01:51:38.3001252Z             {
2026-06-21T01:51:38.3001375Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T01:51:38.3001451Z               "line": 93
2026-06-21T01:51:38.3001545Z             },
2026-06-21T01:51:38.3001627Z             {
2026-06-21T01:51:38.3001744Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T01:51:38.3001829Z               "line": 224
2026-06-21T01:51:38.3001906Z             },
2026-06-21T01:51:38.3001997Z             {
2026-06-21T01:51:38.3002111Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T01:51:38.3002206Z               "line": 96
2026-06-21T01:51:38.3002293Z             },
2026-06-21T01:51:38.3002388Z             {
2026-06-21T01:51:38.3002506Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T01:51:38.3002588Z               "line": 146
2026-06-21T01:51:38.3002683Z             },
2026-06-21T01:51:38.3002759Z             {
2026-06-21T01:51:38.3002879Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.3002969Z               "line": 698
2026-06-21T01:51:38.3003060Z             },
2026-06-21T01:51:38.3003150Z             {
2026-06-21T01:51:38.3003251Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T01:51:38.3003340Z               "line": 118
2026-06-21T01:51:38.3003426Z             },
2026-06-21T01:51:38.3003509Z             {
2026-06-21T01:51:38.3003618Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T01:51:38.3003708Z               "line": 148
2026-06-21T01:51:38.3003794Z             },
2026-06-21T01:51:38.3003881Z             {
2026-06-21T01:51:38.3004003Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.3004093Z               "line": 928
2026-06-21T01:51:38.3004179Z             }
2026-06-21T01:51:38.3004269Z           ]
2026-06-21T01:51:38.3004348Z         }
2026-06-21T01:51:38.3004433Z       }
2026-06-21T01:51:38.3004510Z     },
2026-06-21T01:51:38.3004602Z     {
2026-06-21T01:51:38.3004686Z       "id": "REQ-REACH-2",
2026-06-21T01:51:38.3004850Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-21T01:51:38.3004950Z       "requiredStages": [],
2026-06-21T01:51:38.3005034Z       "stages": {
2026-06-21T01:51:38.3005121Z         "doc": {
2026-06-21T01:51:38.3005216Z           "complete": false,
2026-06-21T01:51:38.3005297Z           "evidence": []
2026-06-21T01:51:38.3005378Z         },
2026-06-21T01:51:38.3005470Z         "impl": {
2026-06-21T01:51:38.3005564Z           "complete": false,
2026-06-21T01:51:38.3005645Z           "evidence": []
2026-06-21T01:51:38.3005741Z         },
2026-06-21T01:51:38.3005827Z         "int": {
2026-06-21T01:51:38.3005932Z           "complete": false,
2026-06-21T01:51:38.3006022Z           "evidence": []
2026-06-21T01:51:38.3006118Z         },
2026-06-21T01:51:38.3006221Z         "unit": {
2026-06-21T01:51:38.3006318Z           "complete": false,
2026-06-21T01:51:38.3006419Z           "evidence": []
2026-06-21T01:51:38.3006499Z         }
2026-06-21T01:51:38.3006590Z       }
2026-06-21T01:51:38.3006676Z     },
2026-06-21T01:51:38.3006767Z     {
2026-06-21T01:51:38.3006884Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-21T01:51:38.3010605Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-21T01:51:38.3010958Z       "requiredStages": [
2026-06-21T01:51:38.3011048Z         "doc",
2026-06-21T01:51:38.3011143Z         "impl",
2026-06-21T01:51:38.3011221Z         "unit",
2026-06-21T01:51:38.3011315Z         "int"
2026-06-21T01:51:38.3011401Z       ],
2026-06-21T01:51:38.3011488Z       "stages": {
2026-06-21T01:51:38.3011578Z         "doc": {
2026-06-21T01:51:38.3011682Z           "complete": true,
2026-06-21T01:51:38.3011778Z           "evidence": [
2026-06-21T01:51:38.3011860Z             {
2026-06-21T01:51:38.3011963Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.3012048Z               "line": 372
2026-06-21T01:51:38.3012129Z             }
2026-06-21T01:51:38.3012224Z           ]
2026-06-21T01:51:38.3012299Z         },
2026-06-21T01:51:38.3012393Z         "impl": {
2026-06-21T01:51:38.3012485Z           "complete": true,
2026-06-21T01:51:38.3012576Z           "evidence": [
2026-06-21T01:51:38.3012657Z             {
2026-06-21T01:51:38.3012780Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:51:38.3012872Z               "line": 110
2026-06-21T01:51:38.3012957Z             }
2026-06-21T01:51:38.3013042Z           ]
2026-06-21T01:51:38.3013125Z         },
2026-06-21T01:51:38.3013210Z         "int": {
2026-06-21T01:51:38.3013295Z           "complete": true,
2026-06-21T01:51:38.3013381Z           "evidence": [
2026-06-21T01:51:38.3013472Z             {
2026-06-21T01:51:38.3013610Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-21T01:51:38.3013710Z               "line": 26
2026-06-21T01:51:38.3013792Z             }
2026-06-21T01:51:38.3013882Z           ]
2026-06-21T01:51:38.3013963Z         },
2026-06-21T01:51:38.3014044Z         "unit": {
2026-06-21T01:51:38.3014140Z           "complete": true,
2026-06-21T01:51:38.3014230Z           "evidence": [
2026-06-21T01:51:38.3014320Z             {
2026-06-21T01:51:38.3014431Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:51:38.3014530Z               "line": 320
2026-06-21T01:51:38.3014605Z             }
2026-06-21T01:51:38.3014696Z           ]
2026-06-21T01:51:38.3014782Z         }
2026-06-21T01:51:38.3014871Z       }
2026-06-21T01:51:38.3014956Z     },
2026-06-21T01:51:38.3015033Z     {
2026-06-21T01:51:38.3015128Z       "id": "REQ-REL-1",
2026-06-21T01:51:38.3015505Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-21T01:51:38.3015609Z       "requiredStages": [
2026-06-21T01:51:38.3015696Z         "doc",
2026-06-21T01:51:38.3015781Z         "impl"
2026-06-21T01:51:38.3015867Z       ],
2026-06-21T01:51:38.3015957Z       "stages": {
2026-06-21T01:51:38.3016049Z         "doc": {
2026-06-21T01:51:38.3016138Z           "complete": true,
2026-06-21T01:51:38.3016234Z           "evidence": [
2026-06-21T01:51:38.3016321Z             {
2026-06-21T01:51:38.3016539Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-21T01:51:38.3016636Z               "line": 3
2026-06-21T01:51:38.3016721Z             }
2026-06-21T01:51:38.3016806Z           ]
2026-06-21T01:51:38.3016887Z         },
2026-06-21T01:51:38.3016984Z         "impl": {
2026-06-21T01:51:38.3017173Z           "complete": true,
2026-06-21T01:51:38.3017251Z           "evidence": [
2026-06-21T01:51:38.3017342Z             {
2026-06-21T01:51:38.3017534Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T01:51:38.3017625Z               "line": 11
2026-06-21T01:51:38.3017713Z             },
2026-06-21T01:51:38.3017796Z             {
2026-06-21T01:51:38.3017912Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:51:38.3018002Z               "line": 265
2026-06-21T01:51:38.3018093Z             }
2026-06-21T01:51:38.3018173Z           ]
2026-06-21T01:51:38.3018260Z         },
2026-06-21T01:51:38.3018345Z         "int": {
2026-06-21T01:51:38.3018454Z           "complete": false,
2026-06-21T01:51:38.3018536Z           "evidence": []
2026-06-21T01:51:38.3018623Z         },
2026-06-21T01:51:38.3018713Z         "unit": {
2026-06-21T01:51:38.3018803Z           "complete": false,
2026-06-21T01:51:38.3018899Z           "evidence": []
2026-06-21T01:51:38.3019089Z         }
2026-06-21T01:51:38.3019186Z       }
2026-06-21T01:51:38.3019267Z     },
2026-06-21T01:51:38.3019351Z     {
2026-06-21T01:51:38.3019452Z       "id": "REQ-REL-2",
2026-06-21T01:51:38.3019922Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-21T01:51:38.3020016Z       "requiredStages": [
2026-06-21T01:51:38.3020101Z         "impl",
2026-06-21T01:51:38.3020197Z         "int"
2026-06-21T01:51:38.3020283Z       ],
2026-06-21T01:51:38.3020363Z       "stages": {
2026-06-21T01:51:38.3020450Z         "doc": {
2026-06-21T01:51:38.3020536Z           "complete": true,
2026-06-21T01:51:38.3020626Z           "evidence": [
2026-06-21T01:51:38.3020702Z             {
2026-06-21T01:51:38.3020818Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-21T01:51:38.3020903Z               "line": 6
2026-06-21T01:51:38.3020973Z             }
2026-06-21T01:51:38.3021064Z           ]
2026-06-21T01:51:38.3021152Z         },
2026-06-21T01:51:38.3021241Z         "impl": {
2026-06-21T01:51:38.3021326Z           "complete": true,
2026-06-21T01:51:38.3021418Z           "evidence": [
2026-06-21T01:51:38.3021508Z             {
2026-06-21T01:51:38.3021617Z               "path": ".github/workflows/release.yml",
2026-06-21T01:51:38.3021698Z               "line": 16
2026-06-21T01:51:38.3021781Z             },
2026-06-21T01:51:38.3021861Z             {
2026-06-21T01:51:38.3021970Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:51:38.3022067Z               "line": 352
2026-06-21T01:51:38.3022152Z             },
2026-06-21T01:51:38.3022237Z             {
2026-06-21T01:51:38.3022343Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:51:38.3022425Z               "line": 426
2026-06-21T01:51:38.3022523Z             },
2026-06-21T01:51:38.3022609Z             {
2026-06-21T01:51:38.3022713Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:51:38.3022803Z               "line": 588
2026-06-21T01:51:38.3022892Z             },
2026-06-21T01:51:38.3022987Z             {
2026-06-21T01:51:38.3023088Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:51:38.3023179Z               "line": 720
2026-06-21T01:51:38.3023255Z             }
2026-06-21T01:51:38.3023336Z           ]
2026-06-21T01:51:38.3023422Z         },
2026-06-21T01:51:38.3023498Z         "int": {
2026-06-21T01:51:38.3023593Z           "complete": true,
2026-06-21T01:51:38.3023675Z           "evidence": [
2026-06-21T01:51:38.3023760Z             {
2026-06-21T01:51:38.3023893Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-21T01:51:38.3023984Z               "line": 13
2026-06-21T01:51:38.3024080Z             }
2026-06-21T01:51:38.3024166Z           ]
2026-06-21T01:51:38.3024251Z         },
2026-06-21T01:51:38.3024338Z         "unit": {
2026-06-21T01:51:38.3024428Z           "complete": false,
2026-06-21T01:51:38.3024518Z           "evidence": []
2026-06-21T01:51:38.3024609Z         }
2026-06-21T01:51:38.3024804Z       }
2026-06-21T01:51:38.3024890Z     },
2026-06-21T01:51:38.3024973Z     {
2026-06-21T01:51:38.3025194Z       "id": "REQ-REL-3",
2026-06-21T01:51:38.3025626Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-21T01:51:38.3025732Z       "requiredStages": [
2026-06-21T01:51:38.3025811Z         "impl",
2026-06-21T01:51:38.3025892Z         "unit"
2026-06-21T01:51:38.3025975Z       ],
2026-06-21T01:51:38.3026070Z       "stages": {
2026-06-21T01:51:38.3026154Z         "doc": {
2026-06-21T01:51:38.3026256Z           "complete": false,
2026-06-21T01:51:38.3026342Z           "evidence": []
2026-06-21T01:51:38.3026418Z         },
2026-06-21T01:51:38.3026503Z         "impl": {
2026-06-21T01:51:38.3026594Z           "complete": true,
2026-06-21T01:51:38.3026718Z           "evidence": [
2026-06-21T01:51:38.3026803Z             {
2026-06-21T01:51:38.3026938Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3027033Z               "line": 237
2026-06-21T01:51:38.3027123Z             },
2026-06-21T01:51:38.3027210Z             {
2026-06-21T01:51:38.3027328Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3027423Z               "line": 289
2026-06-21T01:51:38.3027511Z             },
2026-06-21T01:51:38.3027605Z             {
2026-06-21T01:51:38.3027715Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:51:38.3027801Z               "line": 329
2026-06-21T01:51:38.3027892Z             },
2026-06-21T01:51:38.3027976Z             {
2026-06-21T01:51:38.3028085Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:51:38.3028162Z               "line": 353
2026-06-21T01:51:38.3028248Z             },
2026-06-21T01:51:38.3028333Z             {
2026-06-21T01:51:38.3028433Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:51:38.3028530Z               "line": 394
2026-06-21T01:51:38.3028616Z             }
2026-06-21T01:51:38.3028705Z           ]
2026-06-21T01:51:38.3028792Z         },
2026-06-21T01:51:38.3028882Z         "int": {
2026-06-21T01:51:38.3029068Z           "complete": false,
2026-06-21T01:51:38.3029164Z           "evidence": []
2026-06-21T01:51:38.3029273Z         },
2026-06-21T01:51:38.3029353Z         "unit": {
2026-06-21T01:51:38.3029454Z           "complete": true,
2026-06-21T01:51:38.3029540Z           "evidence": [
2026-06-21T01:51:38.3029626Z             {
2026-06-21T01:51:38.3029751Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3029831Z               "line": 1045
2026-06-21T01:51:38.3029925Z             },
2026-06-21T01:51:38.3030007Z             {
2026-06-21T01:51:38.3030132Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3030216Z               "line": 1104
2026-06-21T01:51:38.3030307Z             }
2026-06-21T01:51:38.3030401Z           ]
2026-06-21T01:51:38.3030478Z         }
2026-06-21T01:51:38.3030571Z       }
2026-06-21T01:51:38.3030656Z     },
2026-06-21T01:51:38.3030752Z     {
2026-06-21T01:51:38.3030848Z       "id": "REQ-RUN-PICKER",
2026-06-21T01:51:38.3035632Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-21T01:51:38.3035963Z       "requiredStages": [
2026-06-21T01:51:38.3036052Z         "doc",
2026-06-21T01:51:38.3036157Z         "impl",
2026-06-21T01:51:38.3036254Z         "unit"
2026-06-21T01:51:38.3036339Z       ],
2026-06-21T01:51:38.3036429Z       "stages": {
2026-06-21T01:51:38.3036525Z         "doc": {
2026-06-21T01:51:38.3036621Z           "complete": true,
2026-06-21T01:51:38.3036715Z           "evidence": [
2026-06-21T01:51:38.3036802Z             {
2026-06-21T01:51:38.3036902Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.3036992Z               "line": 349
2026-06-21T01:51:38.3037083Z             }
2026-06-21T01:51:38.3037169Z           ]
2026-06-21T01:51:38.3037254Z         },
2026-06-21T01:51:38.3037330Z         "impl": {
2026-06-21T01:51:38.3037421Z           "complete": true,
2026-06-21T01:51:38.3037507Z           "evidence": [
2026-06-21T01:51:38.3037598Z             {
2026-06-21T01:51:38.3037712Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3037794Z               "line": 958
2026-06-21T01:51:38.3037874Z             },
2026-06-21T01:51:38.3037946Z             {
2026-06-21T01:51:38.3038042Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3038133Z               "line": 968
2026-06-21T01:51:38.3038222Z             },
2026-06-21T01:51:38.3038303Z             {
2026-06-21T01:51:38.3038419Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T01:51:38.3038518Z               "line": 9
2026-06-21T01:51:38.3038602Z             },
2026-06-21T01:51:38.3038683Z             {
2026-06-21T01:51:38.3038794Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T01:51:38.3038889Z               "line": 67
2026-06-21T01:51:38.3039061Z             },
2026-06-21T01:51:38.3039137Z             {
2026-06-21T01:51:38.3039246Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T01:51:38.3039332Z               "line": 16
2026-06-21T01:51:38.3039419Z             },
2026-06-21T01:51:38.3039505Z             {
2026-06-21T01:51:38.3039623Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T01:51:38.3039709Z               "line": 254
2026-06-21T01:51:38.3039795Z             },
2026-06-21T01:51:38.3039885Z             {
2026-06-21T01:51:38.3039996Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3040091Z               "line": 11
2026-06-21T01:51:38.3040167Z             },
2026-06-21T01:51:38.3040252Z             {
2026-06-21T01:51:38.3040368Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3040452Z               "line": 115
2026-06-21T01:51:38.3040543Z             },
2026-06-21T01:51:38.3040615Z             {
2026-06-21T01:51:38.3040735Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3040814Z               "line": 554
2026-06-21T01:51:38.3040904Z             },
2026-06-21T01:51:38.3040995Z             {
2026-06-21T01:51:38.3041108Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3041198Z               "line": 635
2026-06-21T01:51:38.3041279Z             },
2026-06-21T01:51:38.3041370Z             {
2026-06-21T01:51:38.3041479Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3041574Z               "line": 694
2026-06-21T01:51:38.3041661Z             },
2026-06-21T01:51:38.3041856Z             {
2026-06-21T01:51:38.3041971Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3042146Z               "line": 747
2026-06-21T01:51:38.3042238Z             },
2026-06-21T01:51:38.3042328Z             {
2026-06-21T01:51:38.3042437Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3042528Z               "line": 785
2026-06-21T01:51:38.3042615Z             },
2026-06-21T01:51:38.3042695Z             {
2026-06-21T01:51:38.3042795Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T01:51:38.3042892Z               "line": 8
2026-06-21T01:51:38.3042981Z             }
2026-06-21T01:51:38.3043062Z           ]
2026-06-21T01:51:38.3043153Z         },
2026-06-21T01:51:38.3043235Z         "int": {
2026-06-21T01:51:38.3043329Z           "complete": false,
2026-06-21T01:51:38.3043415Z           "evidence": []
2026-06-21T01:51:38.3043507Z         },
2026-06-21T01:51:38.3043593Z         "unit": {
2026-06-21T01:51:38.3043686Z           "complete": true,
2026-06-21T01:51:38.3043776Z           "evidence": [
2026-06-21T01:51:38.3043862Z             {
2026-06-21T01:51:38.3043975Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3044070Z               "line": 7638
2026-06-21T01:51:38.3044151Z             },
2026-06-21T01:51:38.3044228Z             {
2026-06-21T01:51:38.3044332Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3044422Z               "line": 7649
2026-06-21T01:51:38.3044505Z             },
2026-06-21T01:51:38.3044590Z             {
2026-06-21T01:51:38.3044699Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3044795Z               "line": 879
2026-06-21T01:51:38.3044876Z             },
2026-06-21T01:51:38.3044952Z             {
2026-06-21T01:51:38.3045061Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3045158Z               "line": 928
2026-06-21T01:51:38.3045238Z             },
2026-06-21T01:51:38.3045319Z             {
2026-06-21T01:51:38.3045434Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3045529Z               "line": 979
2026-06-21T01:51:38.3045615Z             },
2026-06-21T01:51:38.3045700Z             {
2026-06-21T01:51:38.3045816Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3045900Z               "line": 996
2026-06-21T01:51:38.3045977Z             },
2026-06-21T01:51:38.3046059Z             {
2026-06-21T01:51:38.3046173Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3046262Z               "line": 1005
2026-06-21T01:51:38.3046347Z             },
2026-06-21T01:51:38.3046420Z             {
2026-06-21T01:51:38.3046537Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3046631Z               "line": 1016
2026-06-21T01:51:38.3046717Z             },
2026-06-21T01:51:38.3046804Z             {
2026-06-21T01:51:38.3046913Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3047004Z               "line": 1038
2026-06-21T01:51:38.3047095Z             },
2026-06-21T01:51:38.3047185Z             {
2026-06-21T01:51:38.3047304Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3047400Z               "line": 1057
2026-06-21T01:51:38.3047490Z             },
2026-06-21T01:51:38.3047576Z             {
2026-06-21T01:51:38.3047687Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3047772Z               "line": 1107
2026-06-21T01:51:38.3047867Z             },
2026-06-21T01:51:38.3047948Z             {
2026-06-21T01:51:38.3048063Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3048153Z               "line": 1136
2026-06-21T01:51:38.3048243Z             },
2026-06-21T01:51:38.3048335Z             {
2026-06-21T01:51:38.3048448Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3048534Z               "line": 1149
2026-06-21T01:51:38.3048621Z             },
2026-06-21T01:51:38.3048707Z             {
2026-06-21T01:51:38.3048897Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3049064Z               "line": 1215
2026-06-21T01:51:38.3049248Z             },
2026-06-21T01:51:38.3049330Z             {
2026-06-21T01:51:38.3049449Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3049544Z               "line": 1256
2026-06-21T01:51:38.3049630Z             },
2026-06-21T01:51:38.3049711Z             {
2026-06-21T01:51:38.3049820Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3049912Z               "line": 1272
2026-06-21T01:51:38.3049988Z             },
2026-06-21T01:51:38.3050074Z             {
2026-06-21T01:51:38.3050193Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T01:51:38.3050279Z               "line": 491
2026-06-21T01:51:38.3050364Z             },
2026-06-21T01:51:38.3050445Z             {
2026-06-21T01:51:38.3050556Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T01:51:38.3050646Z               "line": 506
2026-06-21T01:51:38.3050732Z             },
2026-06-21T01:51:38.3050817Z             {
2026-06-21T01:51:38.3050928Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T01:51:38.3051017Z               "line": 524
2026-06-21T01:51:38.3051099Z             },
2026-06-21T01:51:38.3051185Z             {
2026-06-21T01:51:38.3051300Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T01:51:38.3051383Z               "line": 546
2026-06-21T01:51:38.3051478Z             },
2026-06-21T01:51:38.3051560Z             {
2026-06-21T01:51:38.3051673Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T01:51:38.3051758Z               "line": 556
2026-06-21T01:51:38.3051844Z             },
2026-06-21T01:51:38.3051930Z             {
2026-06-21T01:51:38.3052048Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T01:51:38.3052139Z               "line": 582
2026-06-21T01:51:38.3052222Z             }
2026-06-21T01:51:38.3052302Z           ]
2026-06-21T01:51:38.3052382Z         }
2026-06-21T01:51:38.3052474Z       }
2026-06-21T01:51:38.3052551Z     },
2026-06-21T01:51:38.3052640Z     {
2026-06-21T01:51:38.3052740Z       "id": "REQ-RUN-SHORTCUT",
2026-06-21T01:51:38.3057384Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-21T01:51:38.3057525Z       "requiredStages": [
2026-06-21T01:51:38.3057612Z         "doc",
2026-06-21T01:51:38.3057702Z         "impl",
2026-06-21T01:51:38.3057787Z         "unit"
2026-06-21T01:51:38.3058017Z       ],
2026-06-21T01:51:38.3058102Z       "stages": {
2026-06-21T01:51:38.3058285Z         "doc": {
2026-06-21T01:51:38.3058379Z           "complete": true,
2026-06-21T01:51:38.3058479Z           "evidence": [
2026-06-21T01:51:38.3058561Z             {
2026-06-21T01:51:38.3058661Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.3058751Z               "line": 390
2026-06-21T01:51:38.3058837Z             }
2026-06-21T01:51:38.3058924Z           ]
2026-06-21T01:51:38.3059085Z         },
2026-06-21T01:51:38.3059181Z         "impl": {
2026-06-21T01:51:38.3059276Z           "complete": true,
2026-06-21T01:51:38.3059361Z           "evidence": [
2026-06-21T01:51:38.3059447Z             {
2026-06-21T01:51:38.3059577Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T01:51:38.3059670Z               "line": 39
2026-06-21T01:51:38.3059760Z             },
2026-06-21T01:51:38.3059842Z             {
2026-06-21T01:51:38.3059962Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T01:51:38.3060052Z               "line": 79
2026-06-21T01:51:38.3060133Z             },
2026-06-21T01:51:38.3060205Z             {
2026-06-21T01:51:38.3060324Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T01:51:38.3060409Z               "line": 162
2026-06-21T01:51:38.3060492Z             }
2026-06-21T01:51:38.3060577Z           ]
2026-06-21T01:51:38.3060657Z         },
2026-06-21T01:51:38.3060743Z         "int": {
2026-06-21T01:51:38.3060835Z           "complete": false,
2026-06-21T01:51:38.3060925Z           "evidence": []
2026-06-21T01:51:38.3061010Z         },
2026-06-21T01:51:38.3061096Z         "unit": {
2026-06-21T01:51:38.3061192Z           "complete": true,
2026-06-21T01:51:38.3061277Z           "evidence": [
2026-06-21T01:51:38.3061367Z             {
2026-06-21T01:51:38.3061483Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T01:51:38.3061577Z               "line": 206
2026-06-21T01:51:38.3061668Z             },
2026-06-21T01:51:38.3061750Z             {
2026-06-21T01:51:38.3061864Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T01:51:38.3061953Z               "line": 222
2026-06-21T01:51:38.3062048Z             },
2026-06-21T01:51:38.3062129Z             {
2026-06-21T01:51:38.3062256Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T01:51:38.3062346Z               "line": 238
2026-06-21T01:51:38.3062432Z             },
2026-06-21T01:51:38.3062520Z             {
2026-06-21T01:51:38.3062637Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T01:51:38.3062724Z               "line": 251
2026-06-21T01:51:38.3062796Z             },
2026-06-21T01:51:38.3062886Z             {
2026-06-21T01:51:38.3062995Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T01:51:38.3063087Z               "line": 258
2026-06-21T01:51:38.3063177Z             }
2026-06-21T01:51:38.3063252Z           ]
2026-06-21T01:51:38.3063334Z         }
2026-06-21T01:51:38.3063411Z       }
2026-06-21T01:51:38.3063506Z     },
2026-06-21T01:51:38.3063590Z     {
2026-06-21T01:51:38.3063692Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-21T01:51:38.3063873Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-21T01:51:38.3063963Z       "requiredStages": [
2026-06-21T01:51:38.3064050Z         "impl",
2026-06-21T01:51:38.3064125Z         "unit"
2026-06-21T01:51:38.3064211Z       ],
2026-06-21T01:51:38.3064303Z       "stages": {
2026-06-21T01:51:38.3064384Z         "doc": {
2026-06-21T01:51:38.3064477Z           "complete": false,
2026-06-21T01:51:38.3064559Z           "evidence": []
2026-06-21T01:51:38.3064651Z         },
2026-06-21T01:51:38.3064736Z         "impl": {
2026-06-21T01:51:38.3064830Z           "complete": true,
2026-06-21T01:51:38.3064920Z           "evidence": [
2026-06-21T01:51:38.3065006Z             {
2026-06-21T01:51:38.3065124Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:51:38.3065209Z               "line": 18
2026-06-21T01:51:38.3065429Z             },
2026-06-21T01:51:38.3065509Z             {
2026-06-21T01:51:38.3065634Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:51:38.3065814Z               "line": 35
2026-06-21T01:51:38.3065896Z             },
2026-06-21T01:51:38.3065973Z             {
2026-06-21T01:51:38.3066087Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:51:38.3066172Z               "line": 72
2026-06-21T01:51:38.3066244Z             }
2026-06-21T01:51:38.3066335Z           ]
2026-06-21T01:51:38.3066430Z         },
2026-06-21T01:51:38.3066511Z         "int": {
2026-06-21T01:51:38.3066612Z           "complete": false,
2026-06-21T01:51:38.3066701Z           "evidence": []
2026-06-21T01:51:38.3066792Z         },
2026-06-21T01:51:38.3066874Z         "unit": {
2026-06-21T01:51:38.3066974Z           "complete": true,
2026-06-21T01:51:38.3067069Z           "evidence": [
2026-06-21T01:51:38.3067150Z             {
2026-06-21T01:51:38.3067270Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:51:38.3067359Z               "line": 239
2026-06-21T01:51:38.3067439Z             },
2026-06-21T01:51:38.3067521Z             {
2026-06-21T01:51:38.3067634Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:51:38.3067719Z               "line": 256
2026-06-21T01:51:38.3067804Z             },
2026-06-21T01:51:38.3067891Z             {
2026-06-21T01:51:38.3067995Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:51:38.3068090Z               "line": 265
2026-06-21T01:51:38.3068177Z             }
2026-06-21T01:51:38.3068262Z           ]
2026-06-21T01:51:38.3068347Z         }
2026-06-21T01:51:38.3068428Z       }
2026-06-21T01:51:38.3068516Z     },
2026-06-21T01:51:38.3068591Z     {
2026-06-21T01:51:38.3068696Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-21T01:51:38.3068835Z       "title": "Hostable endpoint-types capability declaration",
2026-06-21T01:51:38.3069030Z       "requiredStages": [
2026-06-21T01:51:38.3069121Z         "impl",
2026-06-21T01:51:38.3069211Z         "unit"
2026-06-21T01:51:38.3069306Z       ],
2026-06-21T01:51:38.3069392Z       "stages": {
2026-06-21T01:51:38.3069484Z         "doc": {
2026-06-21T01:51:38.3069568Z           "complete": false,
2026-06-21T01:51:38.3069669Z           "evidence": []
2026-06-21T01:51:38.3074042Z         },
2026-06-21T01:51:38.3074156Z         "impl": {
2026-06-21T01:51:38.3074267Z           "complete": true,
2026-06-21T01:51:38.3074357Z           "evidence": [
2026-06-21T01:51:38.3074442Z             {
2026-06-21T01:51:38.3074582Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.3074681Z               "line": 598
2026-06-21T01:51:38.3074771Z             }
2026-06-21T01:51:38.3074848Z           ]
2026-06-21T01:51:38.3074939Z         },
2026-06-21T01:51:38.3075024Z         "int": {
2026-06-21T01:51:38.3075124Z           "complete": false,
2026-06-21T01:51:38.3075202Z           "evidence": []
2026-06-21T01:51:38.3075278Z         },
2026-06-21T01:51:38.3075385Z         "unit": {
2026-06-21T01:51:38.3075476Z           "complete": true,
2026-06-21T01:51:38.3075571Z           "evidence": [
2026-06-21T01:51:38.3075660Z             {
2026-06-21T01:51:38.3075793Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.3075879Z               "line": 967
2026-06-21T01:51:38.3075970Z             }
2026-06-21T01:51:38.3076055Z           ]
2026-06-21T01:51:38.3076136Z         }
2026-06-21T01:51:38.3076223Z       }
2026-06-21T01:51:38.3076309Z     },
2026-06-21T01:51:38.3076398Z     {
2026-06-21T01:51:38.3076485Z       "id": "REQ-SEAM-HISTORY",
2026-06-21T01:51:38.3076675Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-21T01:51:38.3076770Z       "requiredStages": [
2026-06-21T01:51:38.3076857Z         "impl",
2026-06-21T01:51:38.3076942Z         "unit",
2026-06-21T01:51:38.3077028Z         "int"
2026-06-21T01:51:38.3077115Z       ],
2026-06-21T01:51:38.3077205Z       "stages": {
2026-06-21T01:51:38.3077295Z         "doc": {
2026-06-21T01:51:38.3077553Z           "complete": false,
2026-06-21T01:51:38.3077643Z           "evidence": []
2026-06-21T01:51:38.3077840Z         },
2026-06-21T01:51:38.3077928Z         "impl": {
2026-06-21T01:51:38.3078028Z           "complete": true,
2026-06-21T01:51:38.3078119Z           "evidence": [
2026-06-21T01:51:38.3078213Z             {
2026-06-21T01:51:38.3078326Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T01:51:38.3078407Z               "line": 24
2026-06-21T01:51:38.3078494Z             },
2026-06-21T01:51:38.3078570Z             {
2026-06-21T01:51:38.3078684Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T01:51:38.3078776Z               "line": 22
2026-06-21T01:51:38.3078866Z             }
2026-06-21T01:51:38.3079033Z           ]
2026-06-21T01:51:38.3079114Z         },
2026-06-21T01:51:38.3079200Z         "int": {
2026-06-21T01:51:38.3079294Z           "complete": true,
2026-06-21T01:51:38.3079381Z           "evidence": [
2026-06-21T01:51:38.3079470Z             {
2026-06-21T01:51:38.3079599Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T01:51:38.3079696Z               "line": 260
2026-06-21T01:51:38.3079767Z             }
2026-06-21T01:51:38.3079853Z           ]
2026-06-21T01:51:38.3079934Z         },
2026-06-21T01:51:38.3080025Z         "unit": {
2026-06-21T01:51:38.3080110Z           "complete": true,
2026-06-21T01:51:38.3080205Z           "evidence": [
2026-06-21T01:51:38.3080292Z             {
2026-06-21T01:51:38.3080397Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T01:51:38.3080481Z               "line": 171
2026-06-21T01:51:38.3080568Z             },
2026-06-21T01:51:38.3080650Z             {
2026-06-21T01:51:38.3080758Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T01:51:38.3080858Z               "line": 200
2026-06-21T01:51:38.3080943Z             },
2026-06-21T01:51:38.3081025Z             {
2026-06-21T01:51:38.3081139Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T01:51:38.3081234Z               "line": 220
2026-06-21T01:51:38.3081330Z             },
2026-06-21T01:51:38.3081416Z             {
2026-06-21T01:51:38.3081543Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T01:51:38.3081636Z               "line": 199
2026-06-21T01:51:38.3081721Z             },
2026-06-21T01:51:38.3081811Z             {
2026-06-21T01:51:38.3081921Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T01:51:38.3082021Z               "line": 219
2026-06-21T01:51:38.3082106Z             },
2026-06-21T01:51:38.3082192Z             {
2026-06-21T01:51:38.3082303Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T01:51:38.3082388Z               "line": 244
2026-06-21T01:51:38.3082474Z             },
2026-06-21T01:51:38.3082561Z             {
2026-06-21T01:51:38.3082679Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T01:51:38.3082760Z               "line": 276
2026-06-21T01:51:38.3082856Z             },
2026-06-21T01:51:38.3082947Z             {
2026-06-21T01:51:38.3083055Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T01:51:38.3083154Z               "line": 297
2026-06-21T01:51:38.3083231Z             },
2026-06-21T01:51:38.3083320Z             {
2026-06-21T01:51:38.3083428Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T01:51:38.3083529Z               "line": 324
2026-06-21T01:51:38.3083621Z             }
2026-06-21T01:51:38.3083706Z           ]
2026-06-21T01:51:38.3083796Z         }
2026-06-21T01:51:38.3083873Z       }
2026-06-21T01:51:38.3083954Z     },
2026-06-21T01:51:38.3084034Z     {
2026-06-21T01:51:38.3084125Z       "id": "REQ-SEAM-INJECT",
2026-06-21T01:51:38.3084283Z       "title": "inject-input methods configurable per activity-state",
2026-06-21T01:51:38.3084373Z       "requiredStages": [
2026-06-21T01:51:38.3084459Z         "impl",
2026-06-21T01:51:38.3084545Z         "unit"
2026-06-21T01:51:38.3084626Z       ],
2026-06-21T01:51:38.3084702Z       "stages": {
2026-06-21T01:51:38.3084912Z         "doc": {
2026-06-21T01:51:38.3085017Z           "complete": false,
2026-06-21T01:51:38.3085103Z           "evidence": []
2026-06-21T01:51:38.3085293Z         },
2026-06-21T01:51:38.3085374Z         "impl": {
2026-06-21T01:51:38.3085476Z           "complete": true,
2026-06-21T01:51:38.3085555Z           "evidence": [
2026-06-21T01:51:38.3085646Z             {
2026-06-21T01:51:38.3085757Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:51:38.3085847Z               "line": 19
2026-06-21T01:51:38.3085932Z             },
2026-06-21T01:51:38.3086012Z             {
2026-06-21T01:51:38.3086131Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:51:38.3086225Z               "line": 111
2026-06-21T01:51:38.3086314Z             }
2026-06-21T01:51:38.3086391Z           ]
2026-06-21T01:51:38.3086469Z         },
2026-06-21T01:51:38.3086563Z         "int": {
2026-06-21T01:51:38.3086648Z           "complete": false,
2026-06-21T01:51:38.3086745Z           "evidence": []
2026-06-21T01:51:38.3086830Z         },
2026-06-21T01:51:38.3086925Z         "unit": {
2026-06-21T01:51:38.3087021Z           "complete": true,
2026-06-21T01:51:38.3087117Z           "evidence": [
2026-06-21T01:51:38.3087207Z             {
2026-06-21T01:51:38.3087321Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:51:38.3087422Z               "line": 345
2026-06-21T01:51:38.3087507Z             },
2026-06-21T01:51:38.3087592Z             {
2026-06-21T01:51:38.3087708Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:51:38.3087798Z               "line": 365
2026-06-21T01:51:38.3087874Z             }
2026-06-21T01:51:38.3087961Z           ]
2026-06-21T01:51:38.3088042Z         }
2026-06-21T01:51:38.3088127Z       }
2026-06-21T01:51:38.3088218Z     },
2026-06-21T01:51:38.3088300Z     {
2026-06-21T01:51:38.3088405Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-21T01:51:38.3088546Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-21T01:51:38.3088646Z       "requiredStages": [
2026-06-21T01:51:38.3088740Z         "impl",
2026-06-21T01:51:38.3088820Z         "unit"
2026-06-21T01:51:38.3088915Z       ],
2026-06-21T01:51:38.3089102Z       "stages": {
2026-06-21T01:51:38.3089196Z         "doc": {
2026-06-21T01:51:38.3089297Z           "complete": false,
2026-06-21T01:51:38.3089382Z           "evidence": []
2026-06-21T01:51:38.3089473Z         },
2026-06-21T01:51:38.3089554Z         "impl": {
2026-06-21T01:51:38.3089650Z           "complete": true,
2026-06-21T01:51:38.3089745Z           "evidence": [
2026-06-21T01:51:38.3089825Z             {
2026-06-21T01:51:38.3089946Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.3090026Z               "line": 18
2026-06-21T01:51:38.3090117Z             },
2026-06-21T01:51:38.3090198Z             {
2026-06-21T01:51:38.3090322Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.3090422Z               "line": 431
2026-06-21T01:51:38.3090508Z             }
2026-06-21T01:51:38.3090590Z           ]
2026-06-21T01:51:38.3090670Z         },
2026-06-21T01:51:38.3090765Z         "int": {
2026-06-21T01:51:38.3090857Z           "complete": false,
2026-06-21T01:51:38.3090952Z           "evidence": []
2026-06-21T01:51:38.3091041Z         },
2026-06-21T01:51:38.3091128Z         "unit": {
2026-06-21T01:51:38.3091219Z           "complete": true,
2026-06-21T01:51:38.3091309Z           "evidence": [
2026-06-21T01:51:38.3091398Z             {
2026-06-21T01:51:38.3091513Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.3091604Z               "line": 881
2026-06-21T01:51:38.3091703Z             },
2026-06-21T01:51:38.3091779Z             {
2026-06-21T01:51:38.3091895Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.3091981Z               "line": 891
2026-06-21T01:51:38.3092066Z             }
2026-06-21T01:51:38.3092148Z           ]
2026-06-21T01:51:38.3092229Z         }
2026-06-21T01:51:38.3092314Z       }
2026-06-21T01:51:38.3092395Z     },
2026-06-21T01:51:38.3092634Z     {
2026-06-21T01:51:38.3092738Z       "id": "REQ-SEAM-PSYCHE",
2026-06-21T01:51:38.3092886Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-21T01:51:38.3093072Z       "requiredStages": [
2026-06-21T01:51:38.3093159Z         "impl",
2026-06-21T01:51:38.3093243Z         "unit",
2026-06-21T01:51:38.3093334Z         "int"
2026-06-21T01:51:38.3093421Z       ],
2026-06-21T01:51:38.3093507Z       "stages": {
2026-06-21T01:51:38.3093596Z         "doc": {
2026-06-21T01:51:38.3093686Z           "complete": false,
2026-06-21T01:51:38.3093777Z           "evidence": []
2026-06-21T01:51:38.3093866Z         },
2026-06-21T01:51:38.3093946Z         "impl": {
2026-06-21T01:51:38.3094041Z           "complete": true,
2026-06-21T01:51:38.3094123Z           "evidence": [
2026-06-21T01:51:38.3094209Z             {
2026-06-21T01:51:38.3094332Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T01:51:38.3094409Z               "line": 19
2026-06-21T01:51:38.3094504Z             },
2026-06-21T01:51:38.3094580Z             {
2026-06-21T01:51:38.3094690Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T01:51:38.3094781Z               "line": 12
2026-06-21T01:51:38.3094866Z             },
2026-06-21T01:51:38.3094947Z             {
2026-06-21T01:51:38.3095068Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.3095158Z               "line": 301
2026-06-21T01:51:38.3095243Z             }
2026-06-21T01:51:38.3095329Z           ]
2026-06-21T01:51:38.3095411Z         },
2026-06-21T01:51:38.3095496Z         "int": {
2026-06-21T01:51:38.3095591Z           "complete": true,
2026-06-21T01:51:38.3095683Z           "evidence": [
2026-06-21T01:51:38.3095772Z             {
2026-06-21T01:51:38.3095887Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T01:51:38.3095978Z               "line": 259
2026-06-21T01:51:38.3096064Z             }
2026-06-21T01:51:38.3096149Z           ]
2026-06-21T01:51:38.3096235Z         },
2026-06-21T01:51:38.3096332Z         "unit": {
2026-06-21T01:51:38.3096426Z           "complete": true,
2026-06-21T01:51:38.3096520Z           "evidence": [
2026-06-21T01:51:38.3096610Z             {
2026-06-21T01:51:38.3096724Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T01:51:38.3096818Z               "line": 195
2026-06-21T01:51:38.3096898Z             },
2026-06-21T01:51:38.3096990Z             {
2026-06-21T01:51:38.3097104Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T01:51:38.3097199Z               "line": 202
2026-06-21T01:51:38.3097291Z             },
2026-06-21T01:51:38.3097376Z             {
2026-06-21T01:51:38.3097500Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T01:51:38.3097586Z               "line": 225
2026-06-21T01:51:38.3097672Z             },
2026-06-21T01:51:38.3097762Z             {
2026-06-21T01:51:38.3097872Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T01:51:38.3097958Z               "line": 106
2026-06-21T01:51:38.3098044Z             },
2026-06-21T01:51:38.3098134Z             {
2026-06-21T01:51:38.3098250Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T01:51:38.3098339Z               "line": 137
2026-06-21T01:51:38.3098420Z             },
2026-06-21T01:51:38.3098506Z             {
2026-06-21T01:51:38.3098621Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T01:51:38.3098706Z               "line": 161
2026-06-21T01:51:38.3098797Z             }
2026-06-21T01:51:38.3098874Z           ]
2026-06-21T01:51:38.3099054Z         }
2026-06-21T01:51:38.3099148Z       }
2026-06-21T01:51:38.3099225Z     },
2026-06-21T01:51:38.3099310Z     {
2026-06-21T01:51:38.3099408Z       "id": "REQ-SEAM-RESUME",
2026-06-21T01:51:38.3099605Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-21T01:51:38.3099700Z       "requiredStages": [
2026-06-21T01:51:38.3099785Z         "impl",
2026-06-21T01:51:38.3099872Z         "unit"
2026-06-21T01:51:38.3099957Z       ],
2026-06-21T01:51:38.3100168Z       "stages": {
2026-06-21T01:51:38.3100248Z         "doc": {
2026-06-21T01:51:38.3100343Z           "complete": false,
2026-06-21T01:51:38.3100530Z           "evidence": []
2026-06-21T01:51:38.3100610Z         },
2026-06-21T01:51:38.3100696Z         "impl": {
2026-06-21T01:51:38.3100782Z           "complete": true,
2026-06-21T01:51:38.3100864Z           "evidence": [
2026-06-21T01:51:38.3100944Z             {
2026-06-21T01:51:38.3101063Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T01:51:38.3101145Z               "line": 19
2026-06-21T01:51:38.3101230Z             }
2026-06-21T01:51:38.3101316Z           ]
2026-06-21T01:51:38.3101397Z         },
2026-06-21T01:51:38.3101479Z         "int": {
2026-06-21T01:51:38.3101559Z           "complete": false,
2026-06-21T01:51:38.3101654Z           "evidence": []
2026-06-21T01:51:38.3101737Z         },
2026-06-21T01:51:38.3101823Z         "unit": {
2026-06-21T01:51:38.3101925Z           "complete": true,
2026-06-21T01:51:38.3102016Z           "evidence": [
2026-06-21T01:51:38.3102106Z             {
2026-06-21T01:51:38.3102217Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T01:51:38.3102311Z               "line": 201
2026-06-21T01:51:38.3102398Z             },
2026-06-21T01:51:38.3102474Z             {
2026-06-21T01:51:38.3102583Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T01:51:38.3102659Z               "line": 223
2026-06-21T01:51:38.3102746Z             },
2026-06-21T01:51:38.3102822Z             {
2026-06-21T01:51:38.3102931Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T01:51:38.3103027Z               "line": 244
2026-06-21T01:51:38.3103108Z             }
2026-06-21T01:51:38.3103199Z           ]
2026-06-21T01:51:38.3103284Z         }
2026-06-21T01:51:38.3103361Z       }
2026-06-21T01:51:38.3103442Z     },
2026-06-21T01:51:38.3103533Z     {
2026-06-21T01:51:38.3103637Z       "id": "REQ-SEAM-SPAWN",
2026-06-21T01:51:38.3103738Z       "title": "spawn-session seam",
2026-06-21T01:51:38.3103837Z       "requiredStages": [
2026-06-21T01:51:38.3103923Z         "impl",
2026-06-21T01:51:38.3104010Z         "unit"
2026-06-21T01:51:38.3104086Z       ],
2026-06-21T01:51:38.3104184Z       "stages": {
2026-06-21T01:51:38.3104265Z         "doc": {
2026-06-21T01:51:38.3104361Z           "complete": false,
2026-06-21T01:51:38.3104454Z           "evidence": []
2026-06-21T01:51:38.3104540Z         },
2026-06-21T01:51:38.3104630Z         "impl": {
2026-06-21T01:51:38.3104721Z           "complete": true,
2026-06-21T01:51:38.3104806Z           "evidence": [
2026-06-21T01:51:38.3104892Z             {
2026-06-21T01:51:38.3105022Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.3105117Z               "line": 20
2026-06-21T01:51:38.3105202Z             }
2026-06-21T01:51:38.3105279Z           ]
2026-06-21T01:51:38.3105379Z         },
2026-06-21T01:51:38.3105474Z         "int": {
2026-06-21T01:51:38.3105560Z           "complete": false,
2026-06-21T01:51:38.3105656Z           "evidence": []
2026-06-21T01:51:38.3105751Z         },
2026-06-21T01:51:38.3105836Z         "unit": {
2026-06-21T01:51:38.3105938Z           "complete": true,
2026-06-21T01:51:38.3106032Z           "evidence": [
2026-06-21T01:51:38.3106122Z             {
2026-06-21T01:51:38.3106243Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.3106342Z               "line": 608
2026-06-21T01:51:38.3106437Z             },
2026-06-21T01:51:38.3106524Z             {
2026-06-21T01:51:38.3106647Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.3106738Z               "line": 615
2026-06-21T01:51:38.3106819Z             },
2026-06-21T01:51:38.3106911Z             {
2026-06-21T01:51:38.3107018Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.3107113Z               "line": 721
2026-06-21T01:51:38.3107189Z             },
2026-06-21T01:51:38.3107275Z             {
2026-06-21T01:51:38.3107388Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.3107565Z               "line": 727
2026-06-21T01:51:38.3107650Z             },
2026-06-21T01:51:38.3107802Z             {
2026-06-21T01:51:38.3107918Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.3108007Z               "line": 752
2026-06-21T01:51:38.3108093Z             },
2026-06-21T01:51:38.3108171Z             {
2026-06-21T01:51:38.3108280Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:51:38.3108374Z               "line": 789
2026-06-21T01:51:38.3108447Z             }
2026-06-21T01:51:38.3108537Z           ]
2026-06-21T01:51:38.3108618Z         }
2026-06-21T01:51:38.3108709Z       }
2026-06-21T01:51:38.3108795Z     },
2026-06-21T01:51:38.3108871Z     {
2026-06-21T01:51:38.3109056Z       "id": "REQ-SEAM-UPDATE",
2026-06-21T01:51:38.3109224Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-21T01:51:38.3109319Z       "requiredStages": [
2026-06-21T01:51:38.3109410Z         "impl",
2026-06-21T01:51:38.3109496Z         "unit"
2026-06-21T01:51:38.3109585Z       ],
2026-06-21T01:51:38.3109675Z       "stages": {
2026-06-21T01:51:38.3109766Z         "doc": {
2026-06-21T01:51:38.3109860Z           "complete": false,
2026-06-21T01:51:38.3109959Z           "evidence": []
2026-06-21T01:51:38.3110040Z         },
2026-06-21T01:51:38.3110131Z         "impl": {
2026-06-21T01:51:38.3110222Z           "complete": true,
2026-06-21T01:51:38.3110316Z           "evidence": [
2026-06-21T01:51:38.3110398Z             {
2026-06-21T01:51:38.3110527Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:51:38.3110617Z               "line": 28
2026-06-21T01:51:38.3110693Z             },
2026-06-21T01:51:38.3110784Z             {
2026-06-21T01:51:38.3110913Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:51:38.3110999Z               "line": 88
2026-06-21T01:51:38.3111085Z             }
2026-06-21T01:51:38.3111170Z           ]
2026-06-21T01:51:38.3111256Z         },
2026-06-21T01:51:38.3111342Z         "int": {
2026-06-21T01:51:38.3111433Z           "complete": false,
2026-06-21T01:51:38.3111514Z           "evidence": []
2026-06-21T01:51:38.3111594Z         },
2026-06-21T01:51:38.3111677Z         "unit": {
2026-06-21T01:51:38.3111762Z           "complete": true,
2026-06-21T01:51:38.3111847Z           "evidence": [
2026-06-21T01:51:38.3111938Z             {
2026-06-21T01:51:38.3112072Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:51:38.3112152Z               "line": 326
2026-06-21T01:51:38.3112248Z             },
2026-06-21T01:51:38.3112331Z             {
2026-06-21T01:51:38.3112457Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:51:38.3112552Z               "line": 337
2026-06-21T01:51:38.3112638Z             }
2026-06-21T01:51:38.3112729Z           ]
2026-06-21T01:51:38.3112810Z         }
2026-06-21T01:51:38.3112900Z       }
2026-06-21T01:51:38.3112986Z     },
2026-06-21T01:51:38.3113067Z     {
2026-06-21T01:51:38.3113171Z       "id": "REQ-SEC-1",
2026-06-21T01:51:38.3113553Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-21T01:51:38.3113664Z       "requiredStages": [
2026-06-21T01:51:38.3113744Z         "impl",
2026-06-21T01:51:38.3113839Z         "unit"
2026-06-21T01:51:38.3113917Z       ],
2026-06-21T01:51:38.3114003Z       "stages": {
2026-06-21T01:51:38.3114093Z         "doc": {
2026-06-21T01:51:38.3114178Z           "complete": false,
2026-06-21T01:51:38.3114270Z           "evidence": []
2026-06-21T01:51:38.3114359Z         },
2026-06-21T01:51:38.3114450Z         "impl": {
2026-06-21T01:51:38.3114551Z           "complete": true,
2026-06-21T01:51:38.3114627Z           "evidence": [
2026-06-21T01:51:38.3114716Z             {
2026-06-21T01:51:38.3114829Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T01:51:38.3114916Z               "line": 86
2026-06-21T01:51:38.3115105Z             },
2026-06-21T01:51:38.3115191Z             {
2026-06-21T01:51:38.3115320Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T01:51:38.3115534Z               "line": 116
2026-06-21T01:51:38.3115624Z             },
2026-06-21T01:51:38.3115709Z             {
2026-06-21T01:51:38.3115835Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T01:51:38.3115920Z               "line": 130
2026-06-21T01:51:38.3116015Z             },
2026-06-21T01:51:38.3116096Z             {
2026-06-21T01:51:38.3116217Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:51:38.3116312Z               "line": 109
2026-06-21T01:51:38.3116396Z             },
2026-06-21T01:51:38.3116488Z             {
2026-06-21T01:51:38.3116601Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:51:38.3116697Z               "line": 130
2026-06-21T01:51:38.3116789Z             },
2026-06-21T01:51:38.3116870Z             {
2026-06-21T01:51:38.3116988Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:51:38.3117079Z               "line": 143
2026-06-21T01:51:38.3117161Z             },
2026-06-21T01:51:38.3117250Z             {
2026-06-21T01:51:38.3117355Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:51:38.3117447Z               "line": 209
2026-06-21T01:51:38.3117527Z             },
2026-06-21T01:51:38.3117612Z             {
2026-06-21T01:51:38.3117721Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:51:38.3117807Z               "line": 235
2026-06-21T01:51:38.3117891Z             },
2026-06-21T01:51:38.3117971Z             {
2026-06-21T01:51:38.3118081Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3118173Z               "line": 5295
2026-06-21T01:51:38.3118253Z             }
2026-06-21T01:51:38.3118338Z           ]
2026-06-21T01:51:38.3118426Z         },
2026-06-21T01:51:38.3118511Z         "int": {
2026-06-21T01:51:38.3118601Z           "complete": false,
2026-06-21T01:51:38.3118697Z           "evidence": []
2026-06-21T01:51:38.3118783Z         },
2026-06-21T01:51:38.3118859Z         "unit": {
2026-06-21T01:51:38.3119026Z           "complete": true,
2026-06-21T01:51:38.3119126Z           "evidence": [
2026-06-21T01:51:38.3119221Z             {
2026-06-21T01:51:38.3119336Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T01:51:38.3119422Z               "line": 142
2026-06-21T01:51:38.3119507Z             },
2026-06-21T01:51:38.3119588Z             {
2026-06-21T01:51:38.3119699Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T01:51:38.3119788Z               "line": 194
2026-06-21T01:51:38.3119874Z             },
2026-06-21T01:51:38.3119956Z             {
2026-06-21T01:51:38.3120066Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T01:51:38.3120150Z               "line": 235
2026-06-21T01:51:38.3120235Z             },
2026-06-21T01:51:38.3120316Z             {
2026-06-21T01:51:38.3120439Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-21T01:51:38.3120524Z               "line": 140
2026-06-21T01:51:38.3120600Z             },
2026-06-21T01:51:38.3120682Z             {
2026-06-21T01:51:38.3120791Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:51:38.3120895Z               "line": 247
2026-06-21T01:51:38.3120978Z             },
2026-06-21T01:51:38.3121059Z             {
2026-06-21T01:51:38.3121168Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:51:38.3121258Z               "line": 277
2026-06-21T01:51:38.3121349Z             },
2026-06-21T01:51:38.3121430Z             {
2026-06-21T01:51:38.3121544Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:51:38.3121631Z               "line": 310
2026-06-21T01:51:38.3121721Z             },
2026-06-21T01:51:38.3121806Z             {
2026-06-21T01:51:38.3121912Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:51:38.3122007Z               "line": 329
2026-06-21T01:51:38.3122093Z             },
2026-06-21T01:51:38.3122289Z             {
2026-06-21T01:51:38.3122398Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:51:38.3122571Z               "line": 362
2026-06-21T01:51:38.3122656Z             },
2026-06-21T01:51:38.3122741Z             {
2026-06-21T01:51:38.3122857Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:51:38.3122943Z               "line": 386
2026-06-21T01:51:38.3123031Z             },
2026-06-21T01:51:38.3123112Z             {
2026-06-21T01:51:38.3123227Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3123318Z               "line": 8296
2026-06-21T01:51:38.3123398Z             }
2026-06-21T01:51:38.3123484Z           ]
2026-06-21T01:51:38.3123566Z         }
2026-06-21T01:51:38.3123652Z       }
2026-06-21T01:51:38.3123736Z     },
2026-06-21T01:51:38.3123813Z     {
2026-06-21T01:51:38.3123919Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-21T01:51:38.3127768Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-21T01:51:38.3127891Z       "requiredStages": [
2026-06-21T01:51:38.3127978Z         "impl",
2026-06-21T01:51:38.3128069Z         "unit",
2026-06-21T01:51:38.3128153Z         "int"
2026-06-21T01:51:38.3128238Z       ],
2026-06-21T01:51:38.3128324Z       "stages": {
2026-06-21T01:51:38.3128410Z         "doc": {
2026-06-21T01:51:38.3128498Z           "complete": false,
2026-06-21T01:51:38.3128583Z           "evidence": []
2026-06-21T01:51:38.3128665Z         },
2026-06-21T01:51:38.3128752Z         "impl": {
2026-06-21T01:51:38.3128841Z           "complete": true,
2026-06-21T01:51:38.3128927Z           "evidence": [
2026-06-21T01:51:38.3129091Z             {
2026-06-21T01:51:38.3129199Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.3129296Z               "line": 1066
2026-06-21T01:51:38.3129376Z             },
2026-06-21T01:51:38.3129461Z             {
2026-06-21T01:51:38.3129581Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.3129672Z               "line": 1723
2026-06-21T01:51:38.3129753Z             },
2026-06-21T01:51:38.3129829Z             {
2026-06-21T01:51:38.3129935Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3130033Z               "line": 2850
2026-06-21T01:51:38.3130114Z             }
2026-06-21T01:51:38.3130201Z           ]
2026-06-21T01:51:38.3130283Z         },
2026-06-21T01:51:38.3130372Z         "int": {
2026-06-21T01:51:38.3130458Z           "complete": true,
2026-06-21T01:51:38.3130550Z           "evidence": [
2026-06-21T01:51:38.3130626Z             {
2026-06-21T01:51:38.3130753Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T01:51:38.3130833Z               "line": 189
2026-06-21T01:51:38.3130910Z             },
2026-06-21T01:51:38.3130994Z             {
2026-06-21T01:51:38.3131103Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T01:51:38.3131309Z               "line": 507
2026-06-21T01:51:38.3131399Z             }
2026-06-21T01:51:38.3131566Z           ]
2026-06-21T01:51:38.3131652Z         },
2026-06-21T01:51:38.3131737Z         "unit": {
2026-06-21T01:51:38.3131828Z           "complete": true,
2026-06-21T01:51:38.3131919Z           "evidence": [
2026-06-21T01:51:38.3132000Z             {
2026-06-21T01:51:38.3132119Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:51:38.3132206Z               "line": 952
2026-06-21T01:51:38.3132295Z             },
2026-06-21T01:51:38.3132381Z             {
2026-06-21T01:51:38.3132477Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3132567Z               "line": 7486
2026-06-21T01:51:38.3132653Z             }
2026-06-21T01:51:38.3132743Z           ]
2026-06-21T01:51:38.3132821Z         }
2026-06-21T01:51:38.3132910Z       }
2026-06-21T01:51:38.3132992Z     },
2026-06-21T01:51:38.3133078Z     {
2026-06-21T01:51:38.3133183Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-21T01:51:38.3140189Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-21T01:51:38.3140323Z       "requiredStages": [
2026-06-21T01:51:38.3140418Z         "doc",
2026-06-21T01:51:38.3140495Z         "impl",
2026-06-21T01:51:38.3140589Z         "unit",
2026-06-21T01:51:38.3140661Z         "int"
2026-06-21T01:51:38.3140742Z       ],
2026-06-21T01:51:38.3140819Z       "stages": {
2026-06-21T01:51:38.3140904Z         "doc": {
2026-06-21T01:51:38.3140999Z           "complete": true,
2026-06-21T01:51:38.3141076Z           "evidence": [
2026-06-21T01:51:38.3141168Z             {
2026-06-21T01:51:38.3141308Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T01:51:38.3141393Z               "line": 130
2026-06-21T01:51:38.3141480Z             },
2026-06-21T01:51:38.3141564Z             {
2026-06-21T01:51:38.3141778Z               "path": "docs/MANIFEST.md",
2026-06-21T01:51:38.3141865Z               "line": 96
2026-06-21T01:51:38.3142054Z             }
2026-06-21T01:51:38.3142131Z           ]
2026-06-21T01:51:38.3142208Z         },
2026-06-21T01:51:38.3142297Z         "impl": {
2026-06-21T01:51:38.3142384Z           "complete": true,
2026-06-21T01:51:38.3142474Z           "evidence": [
2026-06-21T01:51:38.3142555Z             {
2026-06-21T01:51:38.3142689Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:51:38.3142761Z               "line": 77
2026-06-21T01:51:38.3142851Z             },
2026-06-21T01:51:38.3142941Z             {
2026-06-21T01:51:38.3143062Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:51:38.3143156Z               "line": 183
2026-06-21T01:51:38.3143237Z             },
2026-06-21T01:51:38.3143323Z             {
2026-06-21T01:51:38.3143447Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.3143542Z               "line": 222
2026-06-21T01:51:38.3143623Z             },
2026-06-21T01:51:38.3143696Z             {
2026-06-21T01:51:38.3143813Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T01:51:38.3143900Z               "line": 71
2026-06-21T01:51:38.3143986Z             },
2026-06-21T01:51:38.3144072Z             {
2026-06-21T01:51:38.3144190Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3144275Z               "line": 176
2026-06-21T01:51:38.3144362Z             }
2026-06-21T01:51:38.3144448Z           ]
2026-06-21T01:51:38.3144528Z         },
2026-06-21T01:51:38.3144619Z         "int": {
2026-06-21T01:51:38.3144705Z           "complete": true,
2026-06-21T01:51:38.3144795Z           "evidence": [
2026-06-21T01:51:38.3144876Z             {
2026-06-21T01:51:38.3145005Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-21T01:51:38.3145096Z               "line": 25
2026-06-21T01:51:38.3145176Z             }
2026-06-21T01:51:38.3145258Z           ]
2026-06-21T01:51:38.3145344Z         },
2026-06-21T01:51:38.3145425Z         "unit": {
2026-06-21T01:51:38.3145515Z           "complete": true,
2026-06-21T01:51:38.3145607Z           "evidence": [
2026-06-21T01:51:38.3145692Z             {
2026-06-21T01:51:38.3145816Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:51:38.3145907Z               "line": 341
2026-06-21T01:51:38.3145992Z             },
2026-06-21T01:51:38.3146078Z             {
2026-06-21T01:51:38.3146202Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:51:38.3146284Z               "line": 391
2026-06-21T01:51:38.3146373Z             },
2026-06-21T01:51:38.3146453Z             {
2026-06-21T01:51:38.3146578Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.3146676Z               "line": 1244
2026-06-21T01:51:38.3146761Z             },
2026-06-21T01:51:38.3146847Z             {
2026-06-21T01:51:38.3146967Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T01:51:38.3147062Z               "line": 184
2026-06-21T01:51:38.3147147Z             },
2026-06-21T01:51:38.3147233Z             {
2026-06-21T01:51:38.3150958Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T01:51:38.3151069Z               "line": 208
2026-06-21T01:51:38.3151163Z             },
2026-06-21T01:51:38.3151244Z             {
2026-06-21T01:51:38.3151389Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T01:51:38.3151483Z               "line": 236
2026-06-21T01:51:38.3151564Z             },
2026-06-21T01:51:38.3151651Z             {
2026-06-21T01:51:38.3151770Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:51:38.3151863Z               "line": 945
2026-06-21T01:51:38.3151948Z             }
2026-06-21T01:51:38.3152030Z           ]
2026-06-21T01:51:38.3152120Z         }
2026-06-21T01:51:38.3152204Z       }
2026-06-21T01:51:38.3152295Z     },
2026-06-21T01:51:38.3152377Z     {
2026-06-21T01:51:38.3152629Z       "id": "REQ-SHELL-1",
2026-06-21T01:51:38.3153506Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-21T01:51:38.3153725Z       "requiredStages": [
2026-06-21T01:51:38.3153816Z         "impl",
2026-06-21T01:51:38.3153903Z         "unit",
2026-06-21T01:51:38.3153989Z         "int"
2026-06-21T01:51:38.3154073Z       ],
2026-06-21T01:51:38.3154155Z       "stages": {
2026-06-21T01:51:38.3154237Z         "doc": {
2026-06-21T01:51:38.3154336Z           "complete": false,
2026-06-21T01:51:38.3154426Z           "evidence": []
2026-06-21T01:51:38.3154508Z         },
2026-06-21T01:51:38.3154585Z         "impl": {
2026-06-21T01:51:38.3154670Z           "complete": true,
2026-06-21T01:51:38.3154755Z           "evidence": [
2026-06-21T01:51:38.3154835Z             {
2026-06-21T01:51:38.3154965Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.3155060Z               "line": 189
2026-06-21T01:51:38.3155140Z             },
2026-06-21T01:51:38.3155222Z             {
2026-06-21T01:51:38.3155332Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.3155431Z               "line": 268
2026-06-21T01:51:38.3155513Z             },
2026-06-21T01:51:38.3155594Z             {
2026-06-21T01:51:38.3155722Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T01:51:38.3155809Z               "line": 27
2026-06-21T01:51:38.3155895Z             },
2026-06-21T01:51:38.3155961Z             {
2026-06-21T01:51:38.3156085Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T01:51:38.3156172Z               "line": 52
2026-06-21T01:51:38.3156257Z             },
2026-06-21T01:51:38.3156347Z             {
2026-06-21T01:51:38.3156462Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T01:51:38.3156557Z               "line": 144
2026-06-21T01:51:38.3156642Z             },
2026-06-21T01:51:38.3156733Z             {
2026-06-21T01:51:38.3156849Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T01:51:38.3156943Z               "line": 176
2026-06-21T01:51:38.3157032Z             },
2026-06-21T01:51:38.3157113Z             {
2026-06-21T01:51:38.3157236Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.3157317Z               "line": 22
2026-06-21T01:51:38.3157402Z             },
2026-06-21T01:51:38.3157479Z             {
2026-06-21T01:51:38.3157593Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.3157688Z               "line": 65
2026-06-21T01:51:38.3157765Z             },
2026-06-21T01:51:38.3157856Z             {
2026-06-21T01:51:38.3157970Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.3158051Z               "line": 76
2026-06-21T01:51:38.3158132Z             },
2026-06-21T01:51:38.3158223Z             {
2026-06-21T01:51:38.3158336Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.3158433Z               "line": 151
2026-06-21T01:51:38.3158519Z             },
2026-06-21T01:51:38.3158604Z             {
2026-06-21T01:51:38.3158714Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.3158804Z               "line": 210
2026-06-21T01:51:38.3158885Z             },
2026-06-21T01:51:38.3159058Z             {
2026-06-21T01:51:38.3159171Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.3159267Z               "line": 259
2026-06-21T01:51:38.3159344Z             },
2026-06-21T01:51:38.3159425Z             {
2026-06-21T01:51:38.3159548Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.3159640Z               "line": 281
2026-06-21T01:51:38.3159725Z             },
2026-06-21T01:51:38.3159805Z             {
2026-06-21T01:51:38.3160033Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.3160118Z               "line": 294
2026-06-21T01:51:38.3160298Z             },
2026-06-21T01:51:38.3160380Z             {
2026-06-21T01:51:38.3160484Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.3160579Z               "line": 217
2026-06-21T01:51:38.3160652Z             },
2026-06-21T01:51:38.3160742Z             {
2026-06-21T01:51:38.3160846Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.3160932Z               "line": 233
2026-06-21T01:51:38.3161014Z             },
2026-06-21T01:51:38.3161095Z             {
2026-06-21T01:51:38.3161223Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:51:38.3161309Z               "line": 41
2026-06-21T01:51:38.3161395Z             },
2026-06-21T01:51:38.3161471Z             {
2026-06-21T01:51:38.3161586Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:51:38.3161672Z               "line": 222
2026-06-21T01:51:38.3161756Z             },
2026-06-21T01:51:38.3161843Z             {
2026-06-21T01:51:38.3161949Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:51:38.3162048Z               "line": 173
2026-06-21T01:51:38.3162124Z             },
2026-06-21T01:51:38.3162211Z             {
2026-06-21T01:51:38.3162326Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:51:38.3162405Z               "line": 354
2026-06-21T01:51:38.3162495Z             },
2026-06-21T01:51:38.3162576Z             {
2026-06-21T01:51:38.3162685Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:51:38.3162769Z               "line": 419
2026-06-21T01:51:38.3162850Z             },
2026-06-21T01:51:38.3162932Z             {
2026-06-21T01:51:38.3163042Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.3163131Z               "line": 333
2026-06-21T01:51:38.3163213Z             },
2026-06-21T01:51:38.3163303Z             {
2026-06-21T01:51:38.3163403Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3163504Z               "line": 6320
2026-06-21T01:51:38.3163595Z             },
2026-06-21T01:51:38.3163681Z             {
2026-06-21T01:51:38.3163780Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3163872Z               "line": 6470
2026-06-21T01:51:38.3163952Z             },
2026-06-21T01:51:38.3164037Z             {
2026-06-21T01:51:38.3164138Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3164229Z               "line": 6646
2026-06-21T01:51:38.3164305Z             }
2026-06-21T01:51:38.3164395Z           ]
2026-06-21T01:51:38.3164473Z         },
2026-06-21T01:51:38.3164558Z         "int": {
2026-06-21T01:51:38.3164648Z           "complete": true,
2026-06-21T01:51:38.3164734Z           "evidence": [
2026-06-21T01:51:38.3164821Z             {
2026-06-21T01:51:38.3164952Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:51:38.3165039Z               "line": 713
2026-06-21T01:51:38.3165126Z             },
2026-06-21T01:51:38.3165216Z             {
2026-06-21T01:51:38.3165343Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T01:51:38.3165434Z               "line": 8
2026-06-21T01:51:38.3165515Z             },
2026-06-21T01:51:38.3165596Z             {
2026-06-21T01:51:38.3165724Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T01:51:38.3165811Z               "line": 49
2026-06-21T01:51:38.3165897Z             },
2026-06-21T01:51:38.3165987Z             {
2026-06-21T01:51:38.3166107Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.3166197Z               "line": 778
2026-06-21T01:51:38.3166277Z             },
2026-06-21T01:51:38.3166369Z             {
2026-06-21T01:51:38.3166488Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.3166573Z               "line": 1213
2026-06-21T01:51:38.3166664Z             },
2026-06-21T01:51:38.3166746Z             {
2026-06-21T01:51:38.3166864Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T01:51:38.3167037Z               "line": 17
2026-06-21T01:51:38.3167207Z             },
2026-06-21T01:51:38.3167294Z             {
2026-06-21T01:51:38.3167414Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T01:51:38.3167507Z               "line": 14
2026-06-21T01:51:38.3167592Z             }
2026-06-21T01:51:38.3167678Z           ]
2026-06-21T01:51:38.3167759Z         },
2026-06-21T01:51:38.3167853Z         "unit": {
2026-06-21T01:51:38.3167943Z           "complete": true,
2026-06-21T01:51:38.3168039Z           "evidence": [
2026-06-21T01:51:38.3168125Z             {
2026-06-21T01:51:38.3168229Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T01:51:38.3168320Z               "line": 246
2026-06-21T01:51:38.3168402Z             },
2026-06-21T01:51:38.3168487Z             {
2026-06-21T01:51:38.3168596Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T01:51:38.3168683Z               "line": 279
2026-06-21T01:51:38.3168769Z             },
2026-06-21T01:51:38.3168854Z             {
2026-06-21T01:51:38.3169069Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T01:51:38.3169150Z               "line": 319
2026-06-21T01:51:38.3169245Z             },
2026-06-21T01:51:38.3169332Z             {
2026-06-21T01:51:38.3169450Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.3169535Z               "line": 599
2026-06-21T01:51:38.3169618Z             },
2026-06-21T01:51:38.3169703Z             {
2026-06-21T01:51:38.3169812Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.3169909Z               "line": 672
2026-06-21T01:51:38.3169994Z             },
2026-06-21T01:51:38.3170079Z             {
2026-06-21T01:51:38.3170200Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.3170281Z               "line": 816
2026-06-21T01:51:38.3170365Z             },
2026-06-21T01:51:38.3170445Z             {
2026-06-21T01:51:38.3170575Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.3170654Z               "line": 595
2026-06-21T01:51:38.3170739Z             },
2026-06-21T01:51:38.3170819Z             {
2026-06-21T01:51:38.3170940Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:51:38.3171025Z               "line": 399
2026-06-21T01:51:38.3171110Z             },
2026-06-21T01:51:38.3171197Z             {
2026-06-21T01:51:38.3171302Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3171378Z               "line": 8976
2026-06-21T01:51:38.3171458Z             },
2026-06-21T01:51:38.3171541Z             {
2026-06-21T01:51:38.3171645Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3171731Z               "line": 9300
2026-06-21T01:51:38.3171812Z             },
2026-06-21T01:51:38.3171898Z             {
2026-06-21T01:51:38.3171998Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3172088Z               "line": 9717
2026-06-21T01:51:38.3172171Z             }
2026-06-21T01:51:38.3172251Z           ]
2026-06-21T01:51:38.3172336Z         }
2026-06-21T01:51:38.3172427Z       }
2026-06-21T01:51:38.3172504Z     },
2026-06-21T01:51:38.3172580Z     {
2026-06-21T01:51:38.3172680Z       "id": "REQ-SHELL-2",
2026-06-21T01:51:38.3174212Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-21T01:51:38.3174316Z       "requiredStages": [
2026-06-21T01:51:38.3174403Z         "impl",
2026-06-21T01:51:38.3174489Z         "unit",
2026-06-21T01:51:38.3174575Z         "int"
2026-06-21T01:51:38.3174655Z       ],
2026-06-21T01:51:38.3174850Z       "stages": {
2026-06-21T01:51:38.3174936Z         "doc": {
2026-06-21T01:51:38.3175142Z           "complete": false,
2026-06-21T01:51:38.3175237Z           "evidence": []
2026-06-21T01:51:38.3175313Z         },
2026-06-21T01:51:38.3175400Z         "impl": {
2026-06-21T01:51:38.3175485Z           "complete": true,
2026-06-21T01:51:38.3175571Z           "evidence": [
2026-06-21T01:51:38.3175653Z             {
2026-06-21T01:51:38.3175776Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.3175865Z               "line": 217
2026-06-21T01:51:38.3175950Z             },
2026-06-21T01:51:38.3176037Z             {
2026-06-21T01:51:38.3176161Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:51:38.3176256Z               "line": 403
2026-06-21T01:51:38.3176342Z             },
2026-06-21T01:51:38.3176428Z             {
2026-06-21T01:51:38.3176561Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:51:38.3176648Z               "line": 250
2026-06-21T01:51:38.3176738Z             },
2026-06-21T01:51:38.3176823Z             {
2026-06-21T01:51:38.3176948Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.3177029Z               "line": 403
2026-06-21T01:51:38.3177110Z             },
2026-06-21T01:51:38.3177195Z             {
2026-06-21T01:51:38.3177311Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.3177405Z               "line": 30
2026-06-21T01:51:38.3177481Z             },
2026-06-21T01:51:38.3177573Z             {
2026-06-21T01:51:38.3177687Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.3177777Z               "line": 409
2026-06-21T01:51:38.3177859Z             },
2026-06-21T01:51:38.3177946Z             {
2026-06-21T01:51:38.3178063Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.3178153Z               "line": 445
2026-06-21T01:51:38.3178238Z             },
2026-06-21T01:51:38.3178324Z             {
2026-06-21T01:51:38.3178446Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.3178532Z               "line": 660
2026-06-21T01:51:38.3178609Z             },
2026-06-21T01:51:38.3178695Z             {
2026-06-21T01:51:38.3178813Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.3178899Z               "line": 348
2026-06-21T01:51:38.3179114Z             },
2026-06-21T01:51:38.3179200Z             {
2026-06-21T01:51:38.3179324Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T01:51:38.3179409Z               "line": 115
2026-06-21T01:51:38.3179486Z             },
2026-06-21T01:51:38.3179554Z             {
2026-06-21T01:51:38.3179677Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.3179757Z               "line": 120
2026-06-21T01:51:38.3179839Z             },
2026-06-21T01:51:38.3179924Z             {
2026-06-21T01:51:38.3180039Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.3180135Z               "line": 374
2026-06-21T01:51:38.3180216Z             },
2026-06-21T01:51:38.3180305Z             {
2026-06-21T01:51:38.3180425Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.3180513Z               "line": 500
2026-06-21T01:51:38.3180596Z             },
2026-06-21T01:51:38.3180678Z             {
2026-06-21T01:51:38.3180793Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:51:38.3180879Z               "line": 24
2026-06-21T01:51:38.3180968Z             },
2026-06-21T01:51:38.3181053Z             {
2026-06-21T01:51:38.3181163Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:51:38.3181242Z               "line": 76
2026-06-21T01:51:38.3181323Z             },
2026-06-21T01:51:38.3181404Z             {
2026-06-21T01:51:38.3181519Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:51:38.3181604Z               "line": 154
2026-06-21T01:51:38.3181699Z             },
2026-06-21T01:51:38.3181919Z             {
2026-06-21T01:51:38.3182043Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:51:38.3182215Z               "line": 177
2026-06-21T01:51:38.3182305Z             },
2026-06-21T01:51:38.3182382Z             {
2026-06-21T01:51:38.3182501Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:51:38.3182591Z               "line": 273
2026-06-21T01:51:38.3182677Z             },
2026-06-21T01:51:38.3182759Z             {
2026-06-21T01:51:38.3182872Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:51:38.3182963Z               "line": 456
2026-06-21T01:51:38.3183050Z             },
2026-06-21T01:51:38.3183131Z             {
2026-06-21T01:51:38.3183245Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:51:38.3183326Z               "line": 538
2026-06-21T01:51:38.3183412Z             },
2026-06-21T01:51:38.3183492Z             {
2026-06-21T01:51:38.3183620Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T01:51:38.3183716Z               "line": 27
2026-06-21T01:51:38.3183795Z             },
2026-06-21T01:51:38.3183889Z             {
2026-06-21T01:51:38.3184004Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T01:51:38.3184095Z               "line": 48
2026-06-21T01:51:38.3184176Z             },
2026-06-21T01:51:38.3184261Z             {
2026-06-21T01:51:38.3184386Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.3184472Z               "line": 517
2026-06-21T01:51:38.3184561Z             },
2026-06-21T01:51:38.3184644Z             {
2026-06-21T01:51:38.3184753Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3184843Z               "line": 1921
2026-06-21T01:51:38.3184929Z             },
2026-06-21T01:51:38.3185016Z             {
2026-06-21T01:51:38.3185115Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3185205Z               "line": 6334
2026-06-21T01:51:38.3185293Z             },
2026-06-21T01:51:38.3185378Z             {
2026-06-21T01:51:38.3185473Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3185568Z               "line": 6395
2026-06-21T01:51:38.3185655Z             },
2026-06-21T01:51:38.3185740Z             {
2026-06-21T01:51:38.3185844Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3185941Z               "line": 6423
2026-06-21T01:51:38.3186040Z             },
2026-06-21T01:51:38.3186122Z             {
2026-06-21T01:51:38.3186227Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3186318Z               "line": 6477
2026-06-21T01:51:38.3186402Z             },
2026-06-21T01:51:38.3186487Z             {
2026-06-21T01:51:38.3186583Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3186679Z               "line": 6732
2026-06-21T01:51:38.3186754Z             },
2026-06-21T01:51:38.3186840Z             {
2026-06-21T01:51:38.3186937Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3187027Z               "line": 6792
2026-06-21T01:51:38.3187107Z             },
2026-06-21T01:51:38.3187194Z             {
2026-06-21T01:51:38.3187342Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:51:38.3187440Z               "line": 298
2026-06-21T01:51:38.3187527Z             },
2026-06-21T01:51:38.3187618Z             {
2026-06-21T01:51:38.3187722Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:51:38.3187808Z               "line": 339
2026-06-21T01:51:38.3187881Z             }
2026-06-21T01:51:38.3187965Z           ]
2026-06-21T01:51:38.3188046Z         },
2026-06-21T01:51:38.3188138Z         "int": {
2026-06-21T01:51:38.3188229Z           "complete": true,
2026-06-21T01:51:38.3188318Z           "evidence": [
2026-06-21T01:51:38.3188399Z             {
2026-06-21T01:51:38.3188515Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:51:38.3188604Z               "line": 706
2026-06-21T01:51:38.3188689Z             },
2026-06-21T01:51:38.3188780Z             {
2026-06-21T01:51:38.3189097Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.3189183Z               "line": 778
2026-06-21T01:51:38.3189378Z             },
2026-06-21T01:51:38.3189459Z             {
2026-06-21T01:51:38.3189579Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.3189669Z               "line": 1213
2026-06-21T01:51:38.3189746Z             },
2026-06-21T01:51:38.3189827Z             {
2026-06-21T01:51:38.3189945Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T01:51:38.3190036Z               "line": 18
2026-06-21T01:51:38.3190123Z             }
2026-06-21T01:51:38.3190208Z           ]
2026-06-21T01:51:38.3190288Z         },
2026-06-21T01:51:38.3190375Z         "unit": {
2026-06-21T01:51:38.3190471Z           "complete": true,
2026-06-21T01:51:38.3190557Z           "evidence": [
2026-06-21T01:51:38.3190642Z             {
2026-06-21T01:51:38.3190758Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.3190861Z               "line": 744
2026-06-21T01:51:38.3190942Z             },
2026-06-21T01:51:38.3191029Z             {
2026-06-21T01:51:38.3191147Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:51:38.3191233Z               "line": 796
2026-06-21T01:51:38.3191320Z             },
2026-06-21T01:51:38.3191402Z             {
2026-06-21T01:51:38.3191528Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.3191627Z               "line": 705
2026-06-21T01:51:38.3191709Z             },
2026-06-21T01:51:38.3191793Z             {
2026-06-21T01:51:38.3191902Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.3191988Z               "line": 754
2026-06-21T01:51:38.3192074Z             },
2026-06-21T01:51:38.3192155Z             {
2026-06-21T01:51:38.3192278Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.3192365Z               "line": 778
2026-06-21T01:51:38.3192451Z             },
2026-06-21T01:51:38.3192526Z             {
2026-06-21T01:51:38.3192642Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:51:38.3192732Z               "line": 603
2026-06-21T01:51:38.3192817Z             },
2026-06-21T01:51:38.3192913Z             {
2026-06-21T01:51:38.3193028Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:51:38.3193113Z               "line": 624
2026-06-21T01:51:38.3193185Z             },
2026-06-21T01:51:38.3193271Z             {
2026-06-21T01:51:38.3193380Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:51:38.3193471Z               "line": 660
2026-06-21T01:51:38.3193562Z             },
2026-06-21T01:51:38.3193644Z             {
2026-06-21T01:51:38.3193766Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:51:38.3193848Z               "line": 714
2026-06-21T01:51:38.3193930Z             },
2026-06-21T01:51:38.3194015Z             {
2026-06-21T01:51:38.3194132Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:51:38.3194232Z               "line": 732
2026-06-21T01:51:38.3194304Z             },
2026-06-21T01:51:38.3194388Z             {
2026-06-21T01:51:38.3194492Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:51:38.3194579Z               "line": 766
2026-06-21T01:51:38.3194660Z             },
2026-06-21T01:51:38.3194731Z             {
2026-06-21T01:51:38.3194850Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:51:38.3194937Z               "line": 841
2026-06-21T01:51:38.3195018Z             },
2026-06-21T01:51:38.3195093Z             {
2026-06-21T01:51:38.3195219Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T01:51:38.3195299Z               "line": 85
2026-06-21T01:51:38.3195389Z             },
2026-06-21T01:51:38.3195475Z             {
2026-06-21T01:51:38.3195576Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3195670Z               "line": 8044
2026-06-21T01:51:38.3195853Z             },
2026-06-21T01:51:38.3195938Z             {
2026-06-21T01:51:38.3196042Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3196210Z               "line": 9054
2026-06-21T01:51:38.3196300Z             },
2026-06-21T01:51:38.3196381Z             {
2026-06-21T01:51:38.3196487Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3196577Z               "line": 9124
2026-06-21T01:51:38.3196662Z             },
2026-06-21T01:51:38.3196749Z             {
2026-06-21T01:51:38.3196849Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3196943Z               "line": 9162
2026-06-21T01:51:38.3197014Z             }
2026-06-21T01:51:38.3197095Z           ]
2026-06-21T01:51:38.3197177Z         }
2026-06-21T01:51:38.3197272Z       }
2026-06-21T01:51:38.3197347Z     },
2026-06-21T01:51:38.3197429Z     {
2026-06-21T01:51:38.3197525Z       "id": "REQ-SHELL-3",
2026-06-21T01:51:38.3199477Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-21T01:51:38.3199590Z       "requiredStages": [
2026-06-21T01:51:38.3199677Z         "impl",
2026-06-21T01:51:38.3199758Z         "unit",
2026-06-21T01:51:38.3199843Z         "int"
2026-06-21T01:51:38.3199929Z       ],
2026-06-21T01:51:38.3200010Z       "stages": {
2026-06-21T01:51:38.3200101Z         "doc": {
2026-06-21T01:51:38.3200186Z           "complete": false,
2026-06-21T01:51:38.3200276Z           "evidence": []
2026-06-21T01:51:38.3200359Z         },
2026-06-21T01:51:38.3200459Z         "impl": {
2026-06-21T01:51:38.3200539Z           "complete": true,
2026-06-21T01:51:38.3200635Z           "evidence": [
2026-06-21T01:51:38.3200730Z             {
2026-06-21T01:51:38.3200853Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.3200950Z               "line": 229
2026-06-21T01:51:38.3201027Z             },
2026-06-21T01:51:38.3201117Z             {
2026-06-21T01:51:38.3201235Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:51:38.3201322Z               "line": 36
2026-06-21T01:51:38.3201407Z             },
2026-06-21T01:51:38.3201483Z             {
2026-06-21T01:51:38.3201603Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:51:38.3201689Z               "line": 137
2026-06-21T01:51:38.3201769Z             },
2026-06-21T01:51:38.3201851Z             {
2026-06-21T01:51:38.3201976Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:51:38.3202069Z               "line": 153
2026-06-21T01:51:38.3202150Z             },
2026-06-21T01:51:38.3202236Z             {
2026-06-21T01:51:38.3202349Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:51:38.3202438Z               "line": 165
2026-06-21T01:51:38.3202519Z             },
2026-06-21T01:51:38.3202606Z             {
2026-06-21T01:51:38.3202724Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:51:38.3202810Z               "line": 242
2026-06-21T01:51:38.3202897Z             },
2026-06-21T01:51:38.3202973Z             {
2026-06-21T01:51:38.3203096Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:51:38.3203178Z               "line": 267
2026-06-21T01:51:38.3203269Z             },
2026-06-21T01:51:38.3203359Z             {
2026-06-21T01:51:38.3203458Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:51:38.3203546Z               "line": 293
2026-06-21T01:51:38.3203630Z             },
2026-06-21T01:51:38.3203702Z             {
2026-06-21T01:51:38.3203926Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T01:51:38.3204017Z               "line": 51
2026-06-21T01:51:38.3204180Z             },
2026-06-21T01:51:38.3204265Z             {
2026-06-21T01:51:38.3204384Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.3204475Z               "line": 333
2026-06-21T01:51:38.3204556Z             },
2026-06-21T01:51:38.3204646Z             {
2026-06-21T01:51:38.3204749Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.3204836Z               "line": 373
2026-06-21T01:51:38.3204920Z             },
2026-06-21T01:51:38.3205001Z             {
2026-06-21T01:51:38.3205115Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.3205206Z               "line": 602
2026-06-21T01:51:38.3205296Z             },
2026-06-21T01:51:38.3205376Z             {
2026-06-21T01:51:38.3205497Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T01:51:38.3205583Z               "line": 132
2026-06-21T01:51:38.3205672Z             },
2026-06-21T01:51:38.3205754Z             {
2026-06-21T01:51:38.3205873Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.3205963Z               "line": 448
2026-06-21T01:51:38.3206035Z             },
2026-06-21T01:51:38.3206122Z             {
2026-06-21T01:51:38.3206240Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:51:38.3206335Z               "line": 74
2026-06-21T01:51:38.3206418Z             },
2026-06-21T01:51:38.3206507Z             {
2026-06-21T01:51:38.3206631Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.3206713Z               "line": 605
2026-06-21T01:51:38.3206803Z             },
2026-06-21T01:51:38.3206884Z             {
2026-06-21T01:51:38.3206999Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.3207080Z               "line": 396
2026-06-21T01:51:38.3207165Z             },
2026-06-21T01:51:38.3207251Z             {
2026-06-21T01:51:38.3207357Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3207442Z               "line": 6518
2026-06-21T01:51:38.3207532Z             }
2026-06-21T01:51:38.3207617Z           ]
2026-06-21T01:51:38.3207699Z         },
2026-06-21T01:51:38.3207790Z         "int": {
2026-06-21T01:51:38.3207884Z           "complete": true,
2026-06-21T01:51:38.3207965Z           "evidence": [
2026-06-21T01:51:38.3208047Z             {
2026-06-21T01:51:38.3208156Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.3208251Z               "line": 1262
2026-06-21T01:51:38.3208329Z             },
2026-06-21T01:51:38.3208409Z             {
2026-06-21T01:51:38.3208518Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-21T01:51:38.3208595Z               "line": 17
2026-06-21T01:51:38.3208686Z             }
2026-06-21T01:51:38.3208771Z           ]
2026-06-21T01:51:38.3208852Z         },
2026-06-21T01:51:38.3209048Z         "unit": {
2026-06-21T01:51:38.3209148Z           "complete": true,
2026-06-21T01:51:38.3209248Z           "evidence": [
2026-06-21T01:51:38.3209335Z             {
2026-06-21T01:51:38.3209462Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:51:38.3209544Z               "line": 311
2026-06-21T01:51:38.3209635Z             },
2026-06-21T01:51:38.3209720Z             {
2026-06-21T01:51:38.3209838Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:51:38.3209934Z               "line": 325
2026-06-21T01:51:38.3210019Z             },
2026-06-21T01:51:38.3210107Z             {
2026-06-21T01:51:38.3210212Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:51:38.3210299Z               "line": 343
2026-06-21T01:51:38.3210384Z             },
2026-06-21T01:51:38.3210479Z             {
2026-06-21T01:51:38.3210599Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:51:38.3210675Z               "line": 364
2026-06-21T01:51:38.3210765Z             },
2026-06-21T01:51:38.3210985Z             {
2026-06-21T01:51:38.3211094Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:51:38.3211281Z               "line": 376
2026-06-21T01:51:38.3211357Z             },
2026-06-21T01:51:38.3211442Z             {
2026-06-21T01:51:38.3211558Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.3211652Z               "line": 897
2026-06-21T01:51:38.3211733Z             },
2026-06-21T01:51:38.3211815Z             {
2026-06-21T01:51:38.3211934Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.3212020Z               "line": 957
2026-06-21T01:51:38.3212106Z             },
2026-06-21T01:51:38.3212188Z             {
2026-06-21T01:51:38.3212310Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T01:51:38.3212396Z               "line": 338
2026-06-21T01:51:38.3212479Z             },
2026-06-21T01:51:38.3212560Z             {
2026-06-21T01:51:38.3212672Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:51:38.3212767Z               "line": 769
2026-06-21T01:51:38.3212848Z             },
2026-06-21T01:51:38.3212937Z             {
2026-06-21T01:51:38.3213046Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3213137Z               "line": 8836
2026-06-21T01:51:38.3213223Z             }
2026-06-21T01:51:38.3213303Z           ]
2026-06-21T01:51:38.3213394Z         }
2026-06-21T01:51:38.3213476Z       }
2026-06-21T01:51:38.3213562Z     },
2026-06-21T01:51:38.3213646Z     {
2026-06-21T01:51:38.3213743Z       "id": "REQ-SHELL-4",
2026-06-21T01:51:38.3215551Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-21T01:51:38.3215656Z       "requiredStages": [
2026-06-21T01:51:38.3215747Z         "doc",
2026-06-21T01:51:38.3215837Z         "impl",
2026-06-21T01:51:38.3215923Z         "unit",
2026-06-21T01:51:38.3216014Z         "int"
2026-06-21T01:51:38.3216090Z       ],
2026-06-21T01:51:38.3216180Z       "stages": {
2026-06-21T01:51:38.3216266Z         "doc": {
2026-06-21T01:51:38.3216358Z           "complete": true,
2026-06-21T01:51:38.3216453Z           "evidence": [
2026-06-21T01:51:38.3216538Z             {
2026-06-21T01:51:38.3216639Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.3216719Z               "line": 281
2026-06-21T01:51:38.3216805Z             },
2026-06-21T01:51:38.3216886Z             {
2026-06-21T01:51:38.3217115Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T01:51:38.3217215Z               "line": 88
2026-06-21T01:51:38.3217293Z             }
2026-06-21T01:51:38.3217382Z           ]
2026-06-21T01:51:38.3217463Z         },
2026-06-21T01:51:38.3217554Z         "impl": {
2026-06-21T01:51:38.3217641Z           "complete": true,
2026-06-21T01:51:38.3217734Z           "evidence": [
2026-06-21T01:51:38.3217811Z             {
2026-06-21T01:51:38.3217922Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.3218012Z               "line": 243
2026-06-21T01:51:38.3218096Z             },
2026-06-21T01:51:38.3218177Z             {
2026-06-21T01:51:38.3218287Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T01:51:38.3218378Z               "line": 61
2026-06-21T01:51:38.3218463Z             },
2026-06-21T01:51:38.3218544Z             {
2026-06-21T01:51:38.3218664Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.3218749Z               "line": 218
2026-06-21T01:51:38.3218835Z             },
2026-06-21T01:51:38.3219088Z             {
2026-06-21T01:51:38.3222884Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.3223166Z               "line": 245
2026-06-21T01:51:38.3223246Z             },
2026-06-21T01:51:38.3223332Z             {
2026-06-21T01:51:38.3223460Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.3223558Z               "line": 566
2026-06-21T01:51:38.3223634Z             },
2026-06-21T01:51:38.3223721Z             {
2026-06-21T01:51:38.3223845Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.3223930Z               "line": 1141
2026-06-21T01:51:38.3224012Z             },
2026-06-21T01:51:38.3224093Z             {
2026-06-21T01:51:38.3224211Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.3224288Z               "line": 1153
2026-06-21T01:51:38.3224375Z             },
2026-06-21T01:51:38.3224451Z             {
2026-06-21T01:51:38.3224559Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.3224646Z               "line": 1194
2026-06-21T01:51:38.3224728Z             },
2026-06-21T01:51:38.3224813Z             {
2026-06-21T01:51:38.3224937Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.3225023Z               "line": 456
2026-06-21T01:51:38.3225108Z             },
2026-06-21T01:51:38.3225189Z             {
2026-06-21T01:51:38.3225319Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:51:38.3225408Z               "line": 44
2026-06-21T01:51:38.3225494Z             },
2026-06-21T01:51:38.3225577Z             {
2026-06-21T01:51:38.3225682Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:51:38.3225775Z               "line": 208
2026-06-21T01:51:38.3225855Z             },
2026-06-21T01:51:38.3225946Z             {
2026-06-21T01:51:38.3226064Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:51:38.3226149Z               "line": 227
2026-06-21T01:51:38.3226244Z             },
2026-06-21T01:51:38.3226326Z             {
2026-06-21T01:51:38.3226444Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:51:38.3226540Z               "line": 253
2026-06-21T01:51:38.3226627Z             },
2026-06-21T01:51:38.3226703Z             {
2026-06-21T01:51:38.3226830Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:51:38.3226923Z               "line": 272
2026-06-21T01:51:38.3227008Z             },
2026-06-21T01:51:38.3227088Z             {
2026-06-21T01:51:38.3227199Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:51:38.3227284Z               "line": 392
2026-06-21T01:51:38.3227365Z             },
2026-06-21T01:51:38.3227446Z             {
2026-06-21T01:51:38.3227571Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:51:38.3227656Z               "line": 421
2026-06-21T01:51:38.3227742Z             },
2026-06-21T01:51:38.3227824Z             {
2026-06-21T01:51:38.3227947Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:51:38.3228033Z               "line": 439
2026-06-21T01:51:38.3228119Z             },
2026-06-21T01:51:38.3228201Z             {
2026-06-21T01:51:38.3228309Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:51:38.3228390Z               "line": 458
2026-06-21T01:51:38.3228468Z             },
2026-06-21T01:51:38.3228549Z             {
2026-06-21T01:51:38.3228661Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:51:38.3228746Z               "line": 486
2026-06-21T01:51:38.3228838Z             },
2026-06-21T01:51:38.3228919Z             {
2026-06-21T01:51:38.3229119Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.3229210Z               "line": 624
2026-06-21T01:51:38.3229286Z             },
2026-06-21T01:51:38.3229362Z             {
2026-06-21T01:51:38.3229473Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.3229568Z               "line": 829
2026-06-21T01:51:38.3229763Z             },
2026-06-21T01:51:38.3229844Z             {
2026-06-21T01:51:38.3229972Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.3230154Z               "line": 435
2026-06-21T01:51:38.3230239Z             },
2026-06-21T01:51:38.3230316Z             {
2026-06-21T01:51:38.3230422Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3230502Z               "line": 6574
2026-06-21T01:51:38.3230582Z             }
2026-06-21T01:51:38.3230664Z           ]
2026-06-21T01:51:38.3230751Z         },
2026-06-21T01:51:38.3230840Z         "int": {
2026-06-21T01:51:38.3230934Z           "complete": true,
2026-06-21T01:51:38.3231015Z           "evidence": [
2026-06-21T01:51:38.3231101Z             {
2026-06-21T01:51:38.3231223Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-21T01:51:38.3231313Z               "line": 18
2026-06-21T01:51:38.3231395Z             }
2026-06-21T01:51:38.3231482Z           ]
2026-06-21T01:51:38.3231566Z         },
2026-06-21T01:51:38.3231652Z         "unit": {
2026-06-21T01:51:38.3231739Z           "complete": true,
2026-06-21T01:51:38.3231829Z           "evidence": [
2026-06-21T01:51:38.3231918Z             {
2026-06-21T01:51:38.3232049Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.3232139Z               "line": 1391
2026-06-21T01:51:38.3232224Z             },
2026-06-21T01:51:38.3232311Z             {
2026-06-21T01:51:38.3232425Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.3232515Z               "line": 1420
2026-06-21T01:51:38.3232596Z             },
2026-06-21T01:51:38.3232678Z             {
2026-06-21T01:51:38.3232802Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:51:38.3232887Z               "line": 504
2026-06-21T01:51:38.3232974Z             },
2026-06-21T01:51:38.3233054Z             {
2026-06-21T01:51:38.3233173Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:51:38.3233265Z               "line": 514
2026-06-21T01:51:38.3233355Z             },
2026-06-21T01:51:38.3233440Z             {
2026-06-21T01:51:38.3233551Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:51:38.3233642Z               "line": 531
2026-06-21T01:51:38.3233726Z             },
2026-06-21T01:51:38.3233806Z             {
2026-06-21T01:51:38.3233916Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:51:38.3234006Z               "line": 543
2026-06-21T01:51:38.3234132Z             },
2026-06-21T01:51:38.3234253Z             {
2026-06-21T01:51:38.3234433Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:51:38.3234528Z               "line": 555
2026-06-21T01:51:38.3234616Z             },
2026-06-21T01:51:38.3234697Z             {
2026-06-21T01:51:38.3234819Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.3234940Z               "line": 1145
2026-06-21T01:51:38.3235040Z             },
2026-06-21T01:51:38.3235129Z             {
2026-06-21T01:51:38.3235240Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:51:38.3235330Z               "line": 776
2026-06-21T01:51:38.3235406Z             }
2026-06-21T01:51:38.3235492Z           ]
2026-06-21T01:51:38.3235574Z         }
2026-06-21T01:51:38.3235659Z       }
2026-06-21T01:51:38.3235744Z     },
2026-06-21T01:51:38.3235827Z     {
2026-06-21T01:51:38.3235913Z       "id": "REQ-SHELL-5",
2026-06-21T01:51:38.3237187Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-21T01:51:38.3237291Z       "requiredStages": [
2026-06-21T01:51:38.3237382Z         "doc",
2026-06-21T01:51:38.3237464Z         "impl",
2026-06-21T01:51:38.3237653Z         "unit",
2026-06-21T01:51:38.3237740Z         "int"
2026-06-21T01:51:38.3237831Z       ],
2026-06-21T01:51:38.3238030Z       "stages": {
2026-06-21T01:51:38.3238117Z         "doc": {
2026-06-21T01:51:38.3238216Z           "complete": true,
2026-06-21T01:51:38.3238306Z           "evidence": [
2026-06-21T01:51:38.3238398Z             {
2026-06-21T01:51:38.3238484Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.3238579Z               "line": 284
2026-06-21T01:51:38.3238665Z             }
2026-06-21T01:51:38.3238747Z           ]
2026-06-21T01:51:38.3238836Z         },
2026-06-21T01:51:38.3238922Z         "impl": {
2026-06-21T01:51:38.3239109Z           "complete": true,
2026-06-21T01:51:38.3239188Z           "evidence": [
2026-06-21T01:51:38.3239278Z             {
2026-06-21T01:51:38.3239403Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:51:38.3239521Z               "line": 260
2026-06-21T01:51:38.3239607Z             }
2026-06-21T01:51:38.3239689Z           ]
2026-06-21T01:51:38.3239770Z         },
2026-06-21T01:51:38.3239855Z         "int": {
2026-06-21T01:51:38.3239955Z           "complete": true,
2026-06-21T01:51:38.3240043Z           "evidence": [
2026-06-21T01:51:38.3240118Z             {
2026-06-21T01:51:38.3240232Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.3240323Z               "line": 827
2026-06-21T01:51:38.3240409Z             },
2026-06-21T01:51:38.3240494Z             {
2026-06-21T01:51:38.3240619Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.3240714Z               "line": 1290
2026-06-21T01:51:38.3240800Z             },
2026-06-21T01:51:38.3240885Z             {
2026-06-21T01:51:38.3241015Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-21T01:51:38.3241109Z               "line": 23
2026-06-21T01:51:38.3241190Z             }
2026-06-21T01:51:38.3241272Z           ]
2026-06-21T01:51:38.3241363Z         },
2026-06-21T01:51:38.3241443Z         "unit": {
2026-06-21T01:51:38.3241551Z           "complete": true,
2026-06-21T01:51:38.3241633Z           "evidence": [
2026-06-21T01:51:38.3241731Z             {
2026-06-21T01:51:38.3241849Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:51:38.3241941Z               "line": 803
2026-06-21T01:51:38.3242027Z             }
2026-06-21T01:51:38.3242103Z           ]
2026-06-21T01:51:38.3242193Z         }
2026-06-21T01:51:38.3242275Z       }
2026-06-21T01:51:38.3242365Z     },
2026-06-21T01:51:38.3242441Z     {
2026-06-21T01:51:38.3242522Z       "id": "REQ-START-1",
2026-06-21T01:51:38.3242713Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-21T01:51:38.3242808Z       "requiredStages": [
2026-06-21T01:51:38.3242900Z         "impl",
2026-06-21T01:51:38.3242980Z         "unit"
2026-06-21T01:51:38.3243066Z       ],
2026-06-21T01:51:38.3243152Z       "stages": {
2026-06-21T01:51:38.3243234Z         "doc": {
2026-06-21T01:51:38.3243333Z           "complete": false,
2026-06-21T01:51:38.3243424Z           "evidence": []
2026-06-21T01:51:38.3243500Z         },
2026-06-21T01:51:38.3243591Z         "impl": {
2026-06-21T01:51:38.3243690Z           "complete": true,
2026-06-21T01:51:38.3243776Z           "evidence": [
2026-06-21T01:51:38.3243868Z             {
2026-06-21T01:51:38.3243986Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T01:51:38.3244068Z               "line": 16
2026-06-21T01:51:38.3244154Z             }
2026-06-21T01:51:38.3244235Z           ]
2026-06-21T01:51:38.3244324Z         },
2026-06-21T01:51:38.3244399Z         "int": {
2026-06-21T01:51:38.3244496Z           "complete": false,
2026-06-21T01:51:38.3244580Z           "evidence": []
2026-06-21T01:51:38.3244670Z         },
2026-06-21T01:51:38.3244755Z         "unit": {
2026-06-21T01:51:38.3244846Z           "complete": true,
2026-06-21T01:51:38.3244942Z           "evidence": [
2026-06-21T01:51:38.3245017Z             {
2026-06-21T01:51:38.3245137Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T01:51:38.3245332Z               "line": 48
2026-06-21T01:51:38.3245408Z             },
2026-06-21T01:51:38.3245576Z             {
2026-06-21T01:51:38.3245689Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T01:51:38.3245791Z               "line": 63
2026-06-21T01:51:38.3245862Z             }
2026-06-21T01:51:38.3245952Z           ]
2026-06-21T01:51:38.3246038Z         }
2026-06-21T01:51:38.3246120Z       }
2026-06-21T01:51:38.3246205Z     },
2026-06-21T01:51:38.3246291Z     {
2026-06-21T01:51:38.3246392Z       "id": "REQ-START-2",
2026-06-21T01:51:38.3246529Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-21T01:51:38.3246638Z       "requiredStages": [
2026-06-21T01:51:38.3246726Z         "impl",
2026-06-21T01:51:38.3246811Z         "unit",
2026-06-21T01:51:38.3246904Z         "int"
2026-06-21T01:51:38.3246990Z       ],
2026-06-21T01:51:38.3247081Z       "stages": {
2026-06-21T01:51:38.3247166Z         "doc": {
2026-06-21T01:51:38.3247274Z           "complete": false,
2026-06-21T01:51:38.3247370Z           "evidence": []
2026-06-21T01:51:38.3247461Z         },
2026-06-21T01:51:38.3247555Z         "impl": {
2026-06-21T01:51:38.3247646Z           "complete": true,
2026-06-21T01:51:38.3247738Z           "evidence": [
2026-06-21T01:51:38.3247824Z             {
2026-06-21T01:51:38.3247942Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.3248043Z               "line": 16
2026-06-21T01:51:38.3248128Z             },
2026-06-21T01:51:38.3248208Z             {
2026-06-21T01:51:38.3248319Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.3248414Z               "line": 115
2026-06-21T01:51:38.3248496Z             },
2026-06-21T01:51:38.3248595Z             {
2026-06-21T01:51:38.3248710Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.3248801Z               "line": 300
2026-06-21T01:51:38.3248891Z             }
2026-06-21T01:51:38.3249053Z           ]
2026-06-21T01:51:38.3249144Z         },
2026-06-21T01:51:38.3249230Z         "int": {
2026-06-21T01:51:38.3249340Z           "complete": true,
2026-06-21T01:51:38.3249429Z           "evidence": [
2026-06-21T01:51:38.3249506Z             {
2026-06-21T01:51:38.3249631Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T01:51:38.3249716Z               "line": 186
2026-06-21T01:51:38.3249800Z             }
2026-06-21T01:51:38.3249876Z           ]
2026-06-21T01:51:38.3249963Z         },
2026-06-21T01:51:38.3250049Z         "unit": {
2026-06-21T01:51:38.3250134Z           "complete": true,
2026-06-21T01:51:38.3250225Z           "evidence": [
2026-06-21T01:51:38.3250307Z             {
2026-06-21T01:51:38.3250415Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.3250501Z               "line": 590
2026-06-21T01:51:38.3250588Z             },
2026-06-21T01:51:38.3250673Z             {
2026-06-21T01:51:38.3250782Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.3250869Z               "line": 623
2026-06-21T01:51:38.3250950Z             }
2026-06-21T01:51:38.3251036Z           ]
2026-06-21T01:51:38.3251111Z         }
2026-06-21T01:51:38.3251189Z       }
2026-06-21T01:51:38.3251275Z     },
2026-06-21T01:51:38.3251350Z     {
2026-06-21T01:51:38.3251445Z       "id": "REQ-START-3",
2026-06-21T01:51:38.3251608Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-21T01:51:38.3251703Z       "requiredStages": [
2026-06-21T01:51:38.3251789Z         "impl",
2026-06-21T01:51:38.3251871Z         "unit",
2026-06-21T01:51:38.3251955Z         "int"
2026-06-21T01:51:38.3252036Z       ],
2026-06-21T01:51:38.3252121Z       "stages": {
2026-06-21T01:51:38.3252208Z         "doc": {
2026-06-21T01:51:38.3252301Z           "complete": false,
2026-06-21T01:51:38.3252395Z           "evidence": []
2026-06-21T01:51:38.3252477Z         },
2026-06-21T01:51:38.3252573Z         "impl": {
2026-06-21T01:51:38.3252658Z           "complete": true,
2026-06-21T01:51:38.3252868Z           "evidence": [
2026-06-21T01:51:38.3252949Z             {
2026-06-21T01:51:38.3253067Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T01:51:38.3253235Z               "line": 23
2026-06-21T01:51:38.3253325Z             },
2026-06-21T01:51:38.3253412Z             {
2026-06-21T01:51:38.3253516Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T01:51:38.3253607Z               "line": 205
2026-06-21T01:51:38.3253688Z             },
2026-06-21T01:51:38.3253775Z             {
2026-06-21T01:51:38.3253883Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T01:51:38.3253979Z               "line": 221
2026-06-21T01:51:38.3254075Z             },
2026-06-21T01:51:38.3254156Z             {
2026-06-21T01:51:38.3254270Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.3254356Z               "line": 17
2026-06-21T01:51:38.3254443Z             },
2026-06-21T01:51:38.3254536Z             {
2026-06-21T01:51:38.3254646Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.3254743Z               "line": 35
2026-06-21T01:51:38.3254828Z             },
2026-06-21T01:51:38.3254917Z             {
2026-06-21T01:51:38.3255022Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.3255103Z               "line": 116
2026-06-21T01:51:38.3255191Z             }
2026-06-21T01:51:38.3255276Z           ]
2026-06-21T01:51:38.3255378Z         },
2026-06-21T01:51:38.3255464Z         "int": {
2026-06-21T01:51:38.3255558Z           "complete": true,
2026-06-21T01:51:38.3255649Z           "evidence": [
2026-06-21T01:51:38.3255736Z             {
2026-06-21T01:51:38.3255854Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T01:51:38.3255939Z               "line": 488
2026-06-21T01:51:38.3256031Z             }
2026-06-21T01:51:38.3256107Z           ]
2026-06-21T01:51:38.3256192Z         },
2026-06-21T01:51:38.3256279Z         "unit": {
2026-06-21T01:51:38.3256379Z           "complete": true,
2026-06-21T01:51:38.3256484Z           "evidence": [
2026-06-21T01:51:38.3256564Z             {
2026-06-21T01:51:38.3256689Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T01:51:38.3256784Z               "line": 381
2026-06-21T01:51:38.3256870Z             },
2026-06-21T01:51:38.3256957Z             {
2026-06-21T01:51:38.3257075Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T01:51:38.3257166Z               "line": 402
2026-06-21T01:51:38.3257247Z             },
2026-06-21T01:51:38.3257333Z             {
2026-06-21T01:51:38.3257442Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T01:51:38.3257536Z               "line": 412
2026-06-21T01:51:38.3257618Z             },
2026-06-21T01:51:38.3257716Z             {
2026-06-21T01:51:38.3257882Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.3258002Z               "line": 591
2026-06-21T01:51:38.3258092Z             },
2026-06-21T01:51:38.3258168Z             {
2026-06-21T01:51:38.3258283Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.3258379Z               "line": 624
2026-06-21T01:51:38.3258521Z             },
2026-06-21T01:51:38.3258603Z             {
2026-06-21T01:51:38.3258717Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.3258806Z               "line": 657
2026-06-21T01:51:38.3258894Z             }
2026-06-21T01:51:38.3259074Z           ]
2026-06-21T01:51:38.3259160Z         }
2026-06-21T01:51:38.3259247Z       }
2026-06-21T01:51:38.3259341Z     },
2026-06-21T01:51:38.3259417Z     {
2026-06-21T01:51:38.3259519Z       "id": "REQ-START-4",
2026-06-21T01:51:38.3259646Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-21T01:51:38.3259746Z       "requiredStages": [
2026-06-21T01:51:38.3259829Z         "impl",
2026-06-21T01:51:38.3259914Z         "unit"
2026-06-21T01:51:38.3259999Z       ],
2026-06-21T01:51:38.3260080Z       "stages": {
2026-06-21T01:51:38.3260172Z         "doc": {
2026-06-21T01:51:38.3260384Z           "complete": false,
2026-06-21T01:51:38.3260475Z           "evidence": []
2026-06-21T01:51:38.3260552Z         },
2026-06-21T01:51:38.3260742Z         "impl": {
2026-06-21T01:51:38.3260833Z           "complete": true,
2026-06-21T01:51:38.3260924Z           "evidence": [
2026-06-21T01:51:38.3261008Z             {
2026-06-21T01:51:38.3261119Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.3261214Z               "line": 585
2026-06-21T01:51:38.3261295Z             }
2026-06-21T01:51:38.3261386Z           ]
2026-06-21T01:51:38.3261472Z         },
2026-06-21T01:51:38.3261557Z         "int": {
2026-06-21T01:51:38.3261657Z           "complete": false,
2026-06-21T01:51:38.3261744Z           "evidence": []
2026-06-21T01:51:38.3261840Z         },
2026-06-21T01:51:38.3261910Z         "unit": {
2026-06-21T01:51:38.3262001Z           "complete": true,
2026-06-21T01:51:38.3262092Z           "evidence": [
2026-06-21T01:51:38.3262178Z             {
2026-06-21T01:51:38.3262306Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.3262436Z               "line": 1026
2026-06-21T01:51:38.3262568Z             }
2026-06-21T01:51:38.3262681Z           ]
2026-06-21T01:51:38.3262805Z         }
2026-06-21T01:51:38.3262937Z       }
2026-06-21T01:51:38.3263046Z     },
2026-06-21T01:51:38.3263138Z     {
2026-06-21T01:51:38.3263242Z       "id": "REQ-START-5",
2026-06-21T01:51:38.3266320Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-21T01:51:38.3268934Z       "requiredStages": [
2026-06-21T01:51:38.3269230Z         "doc",
2026-06-21T01:51:38.3269420Z         "impl",
2026-06-21T01:51:38.3269591Z         "unit",
2026-06-21T01:51:38.3269769Z         "int"
2026-06-21T01:51:38.3269925Z       ],
2026-06-21T01:51:38.3270093Z       "stages": {
2026-06-21T01:51:38.3270269Z         "doc": {
2026-06-21T01:51:38.3270451Z           "complete": true,
2026-06-21T01:51:38.3270660Z           "evidence": [
2026-06-21T01:51:38.3270845Z             {
2026-06-21T01:51:38.3271025Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.3271249Z               "line": 176
2026-06-21T01:51:38.3271446Z             },
2026-06-21T01:51:38.3271616Z             {
2026-06-21T01:51:38.3271842Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-21T01:51:38.3272108Z               "line": 28
2026-06-21T01:51:38.3272309Z             }
2026-06-21T01:51:38.3272465Z           ]
2026-06-21T01:51:38.3272629Z         },
2026-06-21T01:51:38.3272794Z         "impl": {
2026-06-21T01:51:38.3272972Z           "complete": true,
2026-06-21T01:51:38.3273175Z           "evidence": [
2026-06-21T01:51:38.3273356Z             {
2026-06-21T01:51:38.3273563Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:51:38.3273821Z               "line": 26
2026-06-21T01:51:38.3274008Z             },
2026-06-21T01:51:38.3274159Z             {
2026-06-21T01:51:38.3274365Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:51:38.3274614Z               "line": 212
2026-06-21T01:51:38.3274803Z             },
2026-06-21T01:51:38.3274966Z             {
2026-06-21T01:51:38.3275161Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:51:38.3275582Z               "line": 221
2026-06-21T01:51:38.3275902Z             },
2026-06-21T01:51:38.3276066Z             {
2026-06-21T01:51:38.3276256Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:51:38.3276493Z               "line": 485
2026-06-21T01:51:38.3276678Z             },
2026-06-21T01:51:38.3276847Z             {
2026-06-21T01:51:38.3277041Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.3277280Z               "line": 36
2026-06-21T01:51:38.3277481Z             },
2026-06-21T01:51:38.3277647Z             {
2026-06-21T01:51:38.3277847Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.3278091Z               "line": 118
2026-06-21T01:51:38.3278266Z             },
2026-06-21T01:51:38.3278426Z             {
2026-06-21T01:51:38.3278623Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:51:38.3278855Z               "line": 329
2026-06-21T01:51:38.3279231Z             }
2026-06-21T01:51:38.3279413Z           ]
2026-06-21T01:51:38.3279579Z         },
2026-06-21T01:51:38.3279746Z         "int": {
2026-06-21T01:51:38.3279931Z           "complete": true,
2026-06-21T01:51:38.3280133Z           "evidence": [
2026-06-21T01:51:38.3280314Z             {
2026-06-21T01:51:38.3280528Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T01:51:38.3280790Z               "line": 17
2026-06-21T01:51:38.3280983Z             }
2026-06-21T01:51:38.3281158Z           ]
2026-06-21T01:51:38.3281326Z         },
2026-06-21T01:51:38.3281490Z         "unit": {
2026-06-21T01:51:38.3281682Z           "complete": true,
2026-06-21T01:51:38.3281872Z           "evidence": [
2026-06-21T01:51:38.3282059Z             {
2026-06-21T01:51:38.3282263Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:51:38.3282534Z               "line": 358
2026-06-21T01:51:38.3282721Z             },
2026-06-21T01:51:38.3282893Z             {
2026-06-21T01:51:38.3283093Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:51:38.3283336Z               "line": 371
2026-06-21T01:51:38.3283556Z             },
2026-06-21T01:51:38.3283735Z             {
2026-06-21T01:51:38.3283930Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:51:38.3284186Z               "line": 597
2026-06-21T01:51:38.3284414Z             }
2026-06-21T01:51:38.3284672Z           ]
2026-06-21T01:51:38.3284840Z         }
2026-06-21T01:51:38.3285005Z       }
2026-06-21T01:51:38.3285174Z     },
2026-06-21T01:51:38.3285349Z     {
2026-06-21T01:51:38.3285512Z       "id": "REQ-STORE-1",
2026-06-21T01:51:38.3286471Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-21T01:51:38.3287449Z       "requiredStages": [
2026-06-21T01:51:38.3287644Z         "impl",
2026-06-21T01:51:38.3287822Z         "unit"
2026-06-21T01:51:38.3287998Z       ],
2026-06-21T01:51:38.3288169Z       "stages": {
2026-06-21T01:51:38.3288342Z         "doc": {
2026-06-21T01:51:38.3288526Z           "complete": false,
2026-06-21T01:51:38.3288727Z           "evidence": []
2026-06-21T01:51:38.3288913Z         },
2026-06-21T01:51:38.3289174Z         "impl": {
2026-06-21T01:51:38.3289359Z           "complete": true,
2026-06-21T01:51:38.3289557Z           "evidence": [
2026-06-21T01:51:38.3289744Z             {
2026-06-21T01:51:38.3289950Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.3290216Z               "line": 23
2026-06-21T01:51:38.3290407Z             },
2026-06-21T01:51:38.3290574Z             {
2026-06-21T01:51:38.3290778Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.3291036Z               "line": 46
2026-06-21T01:51:38.3291214Z             },
2026-06-21T01:51:38.3291533Z             {
2026-06-21T01:51:38.3291737Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.3292093Z               "line": 97
2026-06-21T01:51:38.3292280Z             },
2026-06-21T01:51:38.3292446Z             {
2026-06-21T01:51:38.3292651Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.3292900Z               "line": 125
2026-06-21T01:51:38.3293090Z             },
2026-06-21T01:51:38.3293262Z             {
2026-06-21T01:51:38.3293458Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.3293700Z               "line": 207
2026-06-21T01:51:38.3299288Z             },
2026-06-21T01:51:38.3299488Z             {
2026-06-21T01:51:38.3299715Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.3300008Z               "line": 231
2026-06-21T01:51:38.3300190Z             },
2026-06-21T01:51:38.3300351Z             {
2026-06-21T01:51:38.3300562Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.3300844Z               "line": 467
2026-06-21T01:51:38.3301033Z             },
2026-06-21T01:51:38.3301219Z             {
2026-06-21T01:51:38.3301425Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.3301691Z               "line": 25
2026-06-21T01:51:38.3301882Z             },
2026-06-21T01:51:38.3302045Z             {
2026-06-21T01:51:38.3302249Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.3302511Z               "line": 120
2026-06-21T01:51:38.3302692Z             },
2026-06-21T01:51:38.3302859Z             {
2026-06-21T01:51:38.3303069Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.3303316Z               "line": 148
2026-06-21T01:51:38.3303512Z             },
2026-06-21T01:51:38.3303684Z             {
2026-06-21T01:51:38.3303893Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.3304141Z               "line": 165
2026-06-21T01:51:38.3304338Z             },
2026-06-21T01:51:38.3304503Z             {
2026-06-21T01:51:38.3304709Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.3304975Z               "line": 180
2026-06-21T01:51:38.3305172Z             },
2026-06-21T01:51:38.3305350Z             {
2026-06-21T01:51:38.3305549Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.3305807Z               "line": 198
2026-06-21T01:51:38.3306003Z             },
2026-06-21T01:51:38.3306188Z             {
2026-06-21T01:51:38.3306389Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.3306642Z               "line": 207
2026-06-21T01:51:38.3306842Z             },
2026-06-21T01:51:38.3307013Z             {
2026-06-21T01:51:38.3307219Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T01:51:38.3307467Z               "line": 16
2026-06-21T01:51:38.3307652Z             },
2026-06-21T01:51:38.3307823Z             {
2026-06-21T01:51:38.3308025Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T01:51:38.3308274Z               "line": 63
2026-06-21T01:51:38.3308474Z             }
2026-06-21T01:51:38.3308655Z           ]
2026-06-21T01:51:38.3308822Z         },
2026-06-21T01:51:38.3309098Z         "int": {
2026-06-21T01:51:38.3309285Z           "complete": false,
2026-06-21T01:51:38.3309500Z           "evidence": []
2026-06-21T01:51:38.3309690Z         },
2026-06-21T01:51:38.3309857Z         "unit": {
2026-06-21T01:51:38.3310033Z           "complete": true,
2026-06-21T01:51:38.3310242Z           "evidence": [
2026-06-21T01:51:38.3310418Z             {
2026-06-21T01:51:38.3310616Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.3310879Z               "line": 584
2026-06-21T01:51:38.3311080Z             },
2026-06-21T01:51:38.3311245Z             {
2026-06-21T01:51:38.3311470Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.3311742Z               "line": 594
2026-06-21T01:51:38.3312266Z             },
2026-06-21T01:51:38.3312451Z             {
2026-06-21T01:51:38.3312658Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.3313104Z               "line": 616
2026-06-21T01:51:38.3313295Z             },
2026-06-21T01:51:38.3313457Z             {
2026-06-21T01:51:38.3313672Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.3313930Z               "line": 632
2026-06-21T01:51:38.3314148Z             },
2026-06-21T01:51:38.3314349Z             {
2026-06-21T01:51:38.3314574Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:51:38.3314850Z               "line": 690
2026-06-21T01:51:38.3315063Z             },
2026-06-21T01:51:38.3315237Z             {
2026-06-21T01:51:38.3315477Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.3315761Z               "line": 472
2026-06-21T01:51:38.3315958Z             },
2026-06-21T01:51:38.3316143Z             {
2026-06-21T01:51:38.3316376Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:51:38.3316667Z               "line": 507
2026-06-21T01:51:38.3316877Z             },
2026-06-21T01:51:38.3317063Z             {
2026-06-21T01:51:38.3317263Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T01:51:38.3317545Z               "line": 120
2026-06-21T01:51:38.3317751Z             },
2026-06-21T01:51:38.3317926Z             {
2026-06-21T01:51:38.3318142Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T01:51:38.3318378Z               "line": 128
2026-06-21T01:51:38.3318567Z             }
2026-06-21T01:51:38.3318729Z           ]
2026-06-21T01:51:38.3318901Z         }
2026-06-21T01:51:38.3319173Z       }
2026-06-21T01:51:38.3319349Z     },
2026-06-21T01:51:38.3319521Z     {
2026-06-21T01:51:38.3319702Z       "id": "REQ-SUBNET-1",
2026-06-21T01:51:38.3320144Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-21T01:51:38.3320603Z       "requiredStages": [
2026-06-21T01:51:38.3320821Z         "impl",
2026-06-21T01:51:38.3321026Z         "unit"
2026-06-21T01:51:38.3321204Z       ],
2026-06-21T01:51:38.3321367Z       "stages": {
2026-06-21T01:51:38.3321562Z         "doc": {
2026-06-21T01:51:38.3321754Z           "complete": false,
2026-06-21T01:51:38.3321964Z           "evidence": []
2026-06-21T01:51:38.3322158Z         },
2026-06-21T01:51:38.3322326Z         "impl": {
2026-06-21T01:51:38.3322516Z           "complete": true,
2026-06-21T01:51:38.3322722Z           "evidence": [
2026-06-21T01:51:38.3322908Z             {
2026-06-21T01:51:38.3323146Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.3323427Z               "line": 281
2026-06-21T01:51:38.3323641Z             },
2026-06-21T01:51:38.3323822Z             {
2026-06-21T01:51:38.3324026Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.3324294Z               "line": 651
2026-06-21T01:51:38.3324504Z             },
2026-06-21T01:51:38.3324694Z             {
2026-06-21T01:51:38.3324909Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3325186Z               "line": 3399
2026-06-21T01:51:38.3325385Z             },
2026-06-21T01:51:38.3325538Z             {
2026-06-21T01:51:38.3325724Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3325980Z               "line": 3709
2026-06-21T01:51:38.3326184Z             },
2026-06-21T01:51:38.3326359Z             {
2026-06-21T01:51:38.3326565Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3326813Z               "line": 3728
2026-06-21T01:51:38.3327018Z             },
2026-06-21T01:51:38.3327213Z             {
2026-06-21T01:51:38.3327419Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3327676Z               "line": 3792
2026-06-21T01:51:38.3327885Z             },
2026-06-21T01:51:38.3328077Z             {
2026-06-21T01:51:38.3328277Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3328678Z               "line": 3834
2026-06-21T01:51:38.3328880Z             },
2026-06-21T01:51:38.3329294Z             {
2026-06-21T01:51:38.3329479Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3329714Z               "line": 4023
2026-06-21T01:51:38.3329904Z             },
2026-06-21T01:51:38.3330076Z             {
2026-06-21T01:51:38.3330267Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3330495Z               "line": 4093
2026-06-21T01:51:38.3330676Z             },
2026-06-21T01:51:38.3330848Z             {
2026-06-21T01:51:38.3331024Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3331254Z               "line": 4317
2026-06-21T01:51:38.3331443Z             },
2026-06-21T01:51:38.3331609Z             {
2026-06-21T01:51:38.3331793Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3332023Z               "line": 4961
2026-06-21T01:51:38.3332214Z             },
2026-06-21T01:51:38.3332384Z             {
2026-06-21T01:51:38.3332576Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:51:38.3332829Z               "line": 418
2026-06-21T01:51:38.3333023Z             }
2026-06-21T01:51:38.3333196Z           ]
2026-06-21T01:51:38.3333357Z         },
2026-06-21T01:51:38.3333520Z         "int": {
2026-06-21T01:51:38.3333706Z           "complete": false,
2026-06-21T01:51:38.3333915Z           "evidence": []
2026-06-21T01:51:38.3334098Z         },
2026-06-21T01:51:38.3334301Z         "unit": {
2026-06-21T01:51:38.3334487Z           "complete": true,
2026-06-21T01:51:38.3334696Z           "evidence": [
2026-06-21T01:51:38.3334883Z             {
2026-06-21T01:51:38.3335088Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.3335364Z               "line": 1584
2026-06-21T01:51:38.3335554Z             },
2026-06-21T01:51:38.3335732Z             {
2026-06-21T01:51:38.3335946Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3336270Z               "line": 9964
2026-06-21T01:51:38.3336531Z             },
2026-06-21T01:51:38.3336708Z             {
2026-06-21T01:51:38.3336924Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3337167Z               "line": 10134
2026-06-21T01:51:38.3337369Z             },
2026-06-21T01:51:38.3337539Z             {
2026-06-21T01:51:38.3337750Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3337979Z               "line": 10141
2026-06-21T01:51:38.3338164Z             },
2026-06-21T01:51:38.3338336Z             {
2026-06-21T01:51:38.3338532Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3338765Z               "line": 10194
2026-06-21T01:51:38.3339032Z             },
2026-06-21T01:51:38.3339200Z             {
2026-06-21T01:51:38.3339399Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3339658Z               "line": 10211
2026-06-21T01:51:38.3339849Z             },
2026-06-21T01:51:38.3340021Z             {
2026-06-21T01:51:38.3340207Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3340450Z               "line": 10241
2026-06-21T01:51:38.3340636Z             },
2026-06-21T01:51:38.3340813Z             {
2026-06-21T01:51:38.3341008Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3341246Z               "line": 10357
2026-06-21T01:51:38.3341438Z             },
2026-06-21T01:51:38.3341613Z             {
2026-06-21T01:51:38.3341800Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3342031Z               "line": 10508
2026-06-21T01:51:38.3342230Z             }
2026-06-21T01:51:38.3342401Z           ]
2026-06-21T01:51:38.3342573Z         }
2026-06-21T01:51:38.3342745Z       }
2026-06-21T01:51:38.3342921Z     },
2026-06-21T01:51:38.3343093Z     {
2026-06-21T01:51:38.3343273Z       "id": "REQ-SUBNET-2",
2026-06-21T01:51:38.3343622Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-21T01:51:38.3344000Z       "requiredStages": [
2026-06-21T01:51:38.3344447Z         "impl",
2026-06-21T01:51:38.3344629Z         "unit",
2026-06-21T01:51:38.3344799Z         "int"
2026-06-21T01:51:38.3345105Z       ],
2026-06-21T01:51:38.3345281Z       "stages": {
2026-06-21T01:51:38.3345471Z         "doc": {
2026-06-21T01:51:38.3345658Z           "complete": true,
2026-06-21T01:51:38.3345857Z           "evidence": [
2026-06-21T01:51:38.3346043Z             {
2026-06-21T01:51:38.3346283Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T01:51:38.3346578Z               "line": 60
2026-06-21T01:51:38.3346777Z             }
2026-06-21T01:51:38.3346955Z           ]
2026-06-21T01:51:38.3347129Z         },
2026-06-21T01:51:38.3347301Z         "impl": {
2026-06-21T01:51:38.3347489Z           "complete": true,
2026-06-21T01:51:38.3347690Z           "evidence": [
2026-06-21T01:51:38.3347876Z             {
2026-06-21T01:51:38.3348085Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.3348343Z               "line": 886
2026-06-21T01:51:38.3348558Z             },
2026-06-21T01:51:38.3348743Z             {
2026-06-21T01:51:38.3349049Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.3349339Z               "line": 1948
2026-06-21T01:51:38.3349535Z             },
2026-06-21T01:51:38.3349707Z             {
2026-06-21T01:51:38.3349921Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.3350172Z               "line": 633
2026-06-21T01:51:38.3350361Z             },
2026-06-21T01:51:38.3350543Z             {
2026-06-21T01:51:38.3350767Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:51:38.3351020Z               "line": 817
2026-06-21T01:51:38.3351210Z             },
2026-06-21T01:51:38.3351383Z             {
2026-06-21T01:51:38.3351592Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.3351844Z               "line": 26
2026-06-21T01:51:38.3352036Z             },
2026-06-21T01:51:38.3352207Z             {
2026-06-21T01:51:38.3352431Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.3352683Z               "line": 60
2026-06-21T01:51:38.3352889Z             },
2026-06-21T01:51:38.3353062Z             {
2026-06-21T01:51:38.3353266Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.3353528Z               "line": 168
2026-06-21T01:51:38.3353720Z             },
2026-06-21T01:51:38.3353906Z             {
2026-06-21T01:51:38.3354111Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.3354368Z               "line": 295
2026-06-21T01:51:38.3354555Z             },
2026-06-21T01:51:38.3354730Z             {
2026-06-21T01:51:38.3354937Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.3355189Z               "line": 417
2026-06-21T01:51:38.3355388Z             },
2026-06-21T01:51:38.3355569Z             {
2026-06-21T01:51:38.3355788Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:51:38.3356059Z               "line": 252
2026-06-21T01:51:38.3356256Z             },
2026-06-21T01:51:38.3356427Z             {
2026-06-21T01:51:38.3356627Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3356871Z               "line": 3755
2026-06-21T01:51:38.3357061Z             },
2026-06-21T01:51:38.3357224Z             {
2026-06-21T01:51:38.3357429Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3357671Z               "line": 4256
2026-06-21T01:51:38.3357870Z             },
2026-06-21T01:51:38.3358049Z             {
2026-06-21T01:51:38.3358255Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3358507Z               "line": 4892
2026-06-21T01:51:38.3358708Z             }
2026-06-21T01:51:38.3358884Z           ]
2026-06-21T01:51:38.3359161Z         },
2026-06-21T01:51:38.3359342Z         "int": {
2026-06-21T01:51:38.3359528Z           "complete": true,
2026-06-21T01:51:38.3359739Z           "evidence": [
2026-06-21T01:51:38.3359938Z             {
2026-06-21T01:51:38.3360316Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-21T01:51:38.3360575Z               "line": 22
2026-06-21T01:51:38.3360888Z             },
2026-06-21T01:51:38.3361060Z             {
2026-06-21T01:51:38.3361275Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.3361536Z               "line": 645
2026-06-21T01:51:38.3361728Z             },
2026-06-21T01:51:38.3361885Z             {
2026-06-21T01:51:38.3362085Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.3362338Z               "line": 887
2026-06-21T01:51:38.3362534Z             }
2026-06-21T01:51:38.3362695Z           ]
2026-06-21T01:51:38.3362863Z         },
2026-06-21T01:51:38.3363019Z         "unit": {
2026-06-21T01:51:38.3363204Z           "complete": true,
2026-06-21T01:51:38.3363403Z           "evidence": [
2026-06-21T01:51:38.3363589Z             {
2026-06-21T01:51:38.3363783Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.3364046Z               "line": 586
2026-06-21T01:51:38.3364232Z             },
2026-06-21T01:51:38.3364389Z             {
2026-06-21T01:51:38.3364585Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3364820Z               "line": 10004
2026-06-21T01:51:38.3365014Z             },
2026-06-21T01:51:38.3365177Z             {
2026-06-21T01:51:38.3365362Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3365595Z               "line": 10715
2026-06-21T01:51:38.3365774Z             }
2026-06-21T01:51:38.3365938Z           ]
2026-06-21T01:51:38.3366110Z         }
2026-06-21T01:51:38.3366277Z       }
2026-06-21T01:51:38.3366439Z     },
2026-06-21T01:51:38.3366601Z     {
2026-06-21T01:51:38.3366773Z       "id": "REQ-SUBNET-3",
2026-06-21T01:51:38.3367155Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-21T01:51:38.3367574Z       "requiredStages": [
2026-06-21T01:51:38.3367770Z         "impl",
2026-06-21T01:51:38.3367946Z         "unit"
2026-06-21T01:51:38.3368122Z       ],
2026-06-21T01:51:38.3368287Z       "stages": {
2026-06-21T01:51:38.3368472Z         "doc": {
2026-06-21T01:51:38.3368672Z           "complete": false,
2026-06-21T01:51:38.3374024Z           "evidence": []
2026-06-21T01:51:38.3374248Z         },
2026-06-21T01:51:38.3374421Z         "impl": {
2026-06-21T01:51:38.3374611Z           "complete": true,
2026-06-21T01:51:38.3374835Z           "evidence": [
2026-06-21T01:51:38.3375026Z             {
2026-06-21T01:51:38.3375259Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.3375527Z               "line": 152
2026-06-21T01:51:38.3375723Z             },
2026-06-21T01:51:38.3375893Z             {
2026-06-21T01:51:38.3376099Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.3376363Z               "line": 299
2026-06-21T01:51:38.3376546Z             },
2026-06-21T01:51:38.3376723Z             {
2026-06-21T01:51:38.3376932Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.3377189Z               "line": 443
2026-06-21T01:51:38.3377362Z             },
2026-06-21T01:51:38.3377532Z             {
2026-06-21T01:51:38.3377738Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.3377991Z               "line": 532
2026-06-21T01:51:38.3378171Z             },
2026-06-21T01:51:38.3378353Z             {
2026-06-21T01:51:38.3378554Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.3378800Z               "line": 125
2026-06-21T01:51:38.3379179Z             },
2026-06-21T01:51:38.3379375Z             {
2026-06-21T01:51:38.3379581Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.3379828Z               "line": 253
2026-06-21T01:51:38.3380018Z             },
2026-06-21T01:51:38.3380196Z             {
2026-06-21T01:51:38.3380390Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.3380629Z               "line": 264
2026-06-21T01:51:38.3381043Z             },
2026-06-21T01:51:38.3381216Z             {
2026-06-21T01:51:38.3381421Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.3381806Z               "line": 285
2026-06-21T01:51:38.3382003Z             },
2026-06-21T01:51:38.3382180Z             {
2026-06-21T01:51:38.3382375Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.3382628Z               "line": 621
2026-06-21T01:51:38.3382815Z             },
2026-06-21T01:51:38.3382971Z             {
2026-06-21T01:51:38.3383171Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.3383425Z               "line": 680
2026-06-21T01:51:38.3383615Z             },
2026-06-21T01:51:38.3383783Z             {
2026-06-21T01:51:38.3384003Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:51:38.3384248Z               "line": 61
2026-06-21T01:51:38.3384438Z             },
2026-06-21T01:51:38.3384613Z             {
2026-06-21T01:51:38.3384823Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:51:38.3385076Z               "line": 90
2026-06-21T01:51:38.3385262Z             },
2026-06-21T01:51:38.3385434Z             {
2026-06-21T01:51:38.3385649Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:51:38.3385901Z               "line": 125
2026-06-21T01:51:38.3386087Z             },
2026-06-21T01:51:38.3386245Z             {
2026-06-21T01:51:38.3386453Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T01:51:38.3386541Z               "line": 9
2026-06-21T01:51:38.3386622Z             },
2026-06-21T01:51:38.3386706Z             {
2026-06-21T01:51:38.3386807Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3386908Z               "line": 4093
2026-06-21T01:51:38.3386992Z             },
2026-06-21T01:51:38.3387087Z             {
2026-06-21T01:51:38.3387206Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:51:38.3387293Z               "line": 445
2026-06-21T01:51:38.3387387Z             }
2026-06-21T01:51:38.3387473Z           ]
2026-06-21T01:51:38.3387569Z         },
2026-06-21T01:51:38.3387664Z         "int": {
2026-06-21T01:51:38.3387768Z           "complete": false,
2026-06-21T01:51:38.3387861Z           "evidence": []
2026-06-21T01:51:38.3387941Z         },
2026-06-21T01:51:38.3388031Z         "unit": {
2026-06-21T01:51:38.3388127Z           "complete": true,
2026-06-21T01:51:38.3388213Z           "evidence": [
2026-06-21T01:51:38.3388298Z             {
2026-06-21T01:51:38.3388441Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.3388537Z               "line": 1356
2026-06-21T01:51:38.3388622Z             },
2026-06-21T01:51:38.3388713Z             {
2026-06-21T01:51:38.3388838Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.3388932Z               "line": 1713
2026-06-21T01:51:38.3389158Z             },
2026-06-21T01:51:38.3389237Z             {
2026-06-21T01:51:38.3389365Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:51:38.3389451Z               "line": 892
2026-06-21T01:51:38.3389536Z             },
2026-06-21T01:51:38.3389621Z             {
2026-06-21T01:51:38.3389744Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.3389841Z               "line": 991
2026-06-21T01:51:38.3389926Z             },
2026-06-21T01:51:38.3390020Z             {
2026-06-21T01:51:38.3390136Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.3390231Z               "line": 1041
2026-06-21T01:51:38.3390307Z             },
2026-06-21T01:51:38.3390393Z             {
2026-06-21T01:51:38.3390513Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.3390598Z               "line": 1100
2026-06-21T01:51:38.3390679Z             },
2026-06-21T01:51:38.3390751Z             {
2026-06-21T01:51:38.3390884Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:51:38.3390974Z               "line": 234
2026-06-21T01:51:38.3391213Z             },
2026-06-21T01:51:38.3391303Z             {
2026-06-21T01:51:38.3391547Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T01:51:38.3391647Z               "line": 49
2026-06-21T01:51:38.3391733Z             },
2026-06-21T01:51:38.3391818Z             {
2026-06-21T01:51:38.3391933Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3392025Z               "line": 10357
2026-06-21T01:51:38.3392105Z             },
2026-06-21T01:51:38.3392189Z             {
2026-06-21T01:51:38.3392299Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3392385Z               "line": 10463
2026-06-21T01:51:38.3392473Z             },
2026-06-21T01:51:38.3392558Z             {
2026-06-21T01:51:38.3392664Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3392760Z               "line": 10681
2026-06-21T01:51:38.3392840Z             }
2026-06-21T01:51:38.3392930Z           ]
2026-06-21T01:51:38.3393008Z         }
2026-06-21T01:51:38.3393103Z       }
2026-06-21T01:51:38.3393188Z     },
2026-06-21T01:51:38.3393270Z     {
2026-06-21T01:51:38.3393370Z       "id": "REQ-SUBNET-4",
2026-06-21T01:51:38.3393656Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-21T01:51:38.3393746Z       "requiredStages": [
2026-06-21T01:51:38.3393836Z         "impl",
2026-06-21T01:51:38.3393919Z         "unit"
2026-06-21T01:51:38.3393995Z       ],
2026-06-21T01:51:38.3394079Z       "stages": {
2026-06-21T01:51:38.3394161Z         "doc": {
2026-06-21T01:51:38.3394253Z           "complete": true,
2026-06-21T01:51:38.3394343Z           "evidence": [
2026-06-21T01:51:38.3394418Z             {
2026-06-21T01:51:38.3394572Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T01:51:38.3394663Z               "line": 60
2026-06-21T01:51:38.3394751Z             }
2026-06-21T01:51:38.3394841Z           ]
2026-06-21T01:51:38.3394923Z         },
2026-06-21T01:51:38.3395022Z         "impl": {
2026-06-21T01:51:38.3395106Z           "complete": true,
2026-06-21T01:51:38.3395202Z           "evidence": [
2026-06-21T01:51:38.3395283Z             {
2026-06-21T01:51:38.3395392Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3395483Z               "line": 3399
2026-06-21T01:51:38.3395561Z             },
2026-06-21T01:51:38.3395641Z             {
2026-06-21T01:51:38.3395740Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3395837Z               "line": 4859
2026-06-21T01:51:38.3395918Z             },
2026-06-21T01:51:38.3396004Z             {
2026-06-21T01:51:38.3396108Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3396190Z               "line": 4892
2026-06-21T01:51:38.3396279Z             }
2026-06-21T01:51:38.3396351Z           ]
2026-06-21T01:51:38.3396441Z         },
2026-06-21T01:51:38.3396524Z         "int": {
2026-06-21T01:51:38.3396628Z           "complete": false,
2026-06-21T01:51:38.3396723Z           "evidence": []
2026-06-21T01:51:38.3396805Z         },
2026-06-21T01:51:38.3396900Z         "unit": {
2026-06-21T01:51:38.3396995Z           "complete": true,
2026-06-21T01:51:38.3397091Z           "evidence": [
2026-06-21T01:51:38.3397173Z             {
2026-06-21T01:51:38.3397280Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3397377Z               "line": 10120
2026-06-21T01:51:38.3397459Z             },
2026-06-21T01:51:38.3397548Z             {
2026-06-21T01:51:38.3397652Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3397743Z               "line": 10194
2026-06-21T01:51:38.3397829Z             }
2026-06-21T01:51:38.3397919Z           ]
2026-06-21T01:51:38.3398009Z         }
2026-06-21T01:51:38.3398095Z       }
2026-06-21T01:51:38.3398181Z     },
2026-06-21T01:51:38.3398266Z     {
2026-06-21T01:51:38.3398367Z       "id": "REQ-SUBNET-5",
2026-06-21T01:51:38.3399821Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-21T01:51:38.3400205Z       "requiredStages": [
2026-06-21T01:51:38.3400304Z         "impl",
2026-06-21T01:51:38.3400391Z         "unit",
2026-06-21T01:51:38.3400481Z         "int"
2026-06-21T01:51:38.3400571Z       ],
2026-06-21T01:51:38.3400667Z       "stages": {
2026-06-21T01:51:38.3400763Z         "doc": {
2026-06-21T01:51:38.3400862Z           "complete": false,
2026-06-21T01:51:38.3400963Z           "evidence": []
2026-06-21T01:51:38.3401053Z         },
2026-06-21T01:51:38.3401148Z         "impl": {
2026-06-21T01:51:38.3401244Z           "complete": true,
2026-06-21T01:51:38.3401340Z           "evidence": [
2026-06-21T01:51:38.3401439Z             {
2026-06-21T01:51:38.3401568Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:51:38.3401673Z               "line": 128
2026-06-21T01:51:38.3401759Z             },
2026-06-21T01:51:38.3401858Z             {
2026-06-21T01:51:38.3401988Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:51:38.3402092Z               "line": 413
2026-06-21T01:51:38.3402183Z             },
2026-06-21T01:51:38.3402270Z             {
2026-06-21T01:51:38.3402397Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.3402488Z               "line": 74
2026-06-21T01:51:38.3402581Z             },
2026-06-21T01:51:38.3402665Z             {
2026-06-21T01:51:38.3402797Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.3402893Z               "line": 332
2026-06-21T01:51:38.3402982Z             },
2026-06-21T01:51:38.3403072Z             {
2026-06-21T01:51:38.3403191Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.3403292Z               "line": 621
2026-06-21T01:51:38.3403386Z             },
2026-06-21T01:51:38.3403477Z             {
2026-06-21T01:51:38.3403611Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T01:51:38.3403705Z               "line": 31
2026-06-21T01:51:38.3403796Z             },
2026-06-21T01:51:38.3403883Z             {
2026-06-21T01:51:38.3404016Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T01:51:38.3404116Z               "line": 50
2026-06-21T01:51:38.3404202Z             },
2026-06-21T01:51:38.3404288Z             {
2026-06-21T01:51:38.3404416Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T01:51:38.3404508Z               "line": 69
2026-06-21T01:51:38.3404597Z             },
2026-06-21T01:51:38.3404693Z             {
2026-06-21T01:51:38.3404818Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T01:51:38.3404908Z               "line": 113
2026-06-21T01:51:38.3404993Z             },
2026-06-21T01:51:38.3405080Z             {
2026-06-21T01:51:38.3405213Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T01:51:38.3405302Z               "line": 25
2026-06-21T01:51:38.3405401Z             },
2026-06-21T01:51:38.3405497Z             {
2026-06-21T01:51:38.3405624Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T01:51:38.3405728Z               "line": 34
2026-06-21T01:51:38.3405815Z             },
2026-06-21T01:51:38.3405915Z             {
2026-06-21T01:51:38.3406029Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T01:51:38.3406121Z               "line": 17
2026-06-21T01:51:38.3406216Z             },
2026-06-21T01:51:38.3406300Z             {
2026-06-21T01:51:38.3406416Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3406506Z               "line": 4817
2026-06-21T01:51:38.3406587Z             },
2026-06-21T01:51:38.3406663Z             {
2026-06-21T01:51:38.3406783Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:51:38.3406868Z               "line": 419
2026-06-21T01:51:38.3407055Z             }
2026-06-21T01:51:38.3407145Z           ]
2026-06-21T01:51:38.3407222Z         },
2026-06-21T01:51:38.3407403Z         "int": {
2026-06-21T01:51:38.3407493Z           "complete": true,
2026-06-21T01:51:38.3407593Z           "evidence": [
2026-06-21T01:51:38.3407680Z             {
2026-06-21T01:51:38.3407794Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:51:38.3407903Z               "line": 821
2026-06-21T01:51:38.3407986Z             }
2026-06-21T01:51:38.3408071Z           ]
2026-06-21T01:51:38.3408160Z         },
2026-06-21T01:51:38.3408250Z         "unit": {
2026-06-21T01:51:38.3408346Z           "complete": true,
2026-06-21T01:51:38.3408438Z           "evidence": [
2026-06-21T01:51:38.3408521Z             {
2026-06-21T01:51:38.3408660Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:51:38.3408761Z               "line": 341
2026-06-21T01:51:38.3408846Z             },
2026-06-21T01:51:38.3408937Z             {
2026-06-21T01:51:38.3409156Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:51:38.3409242Z               "line": 1115
2026-06-21T01:51:38.3409329Z             },
2026-06-21T01:51:38.3409409Z             {
2026-06-21T01:51:38.3409533Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T01:51:38.3409624Z               "line": 151
2026-06-21T01:51:38.3409700Z             },
2026-06-21T01:51:38.3409785Z             {
2026-06-21T01:51:38.3409915Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T01:51:38.3410015Z               "line": 61
2026-06-21T01:51:38.3410100Z             },
2026-06-21T01:51:38.3410191Z             {
2026-06-21T01:51:38.3410316Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T01:51:38.3410405Z               "line": 111
2026-06-21T01:51:38.3410490Z             },
2026-06-21T01:51:38.3410576Z             {
2026-06-21T01:51:38.3410698Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T01:51:38.3410779Z               "line": 138
2026-06-21T01:51:38.3410869Z             },
2026-06-21T01:51:38.3410956Z             {
2026-06-21T01:51:38.3411079Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T01:51:38.3411170Z               "line": 148
2026-06-21T01:51:38.3411251Z             },
2026-06-21T01:51:38.3411342Z             {
2026-06-21T01:51:38.3411446Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3411538Z               "line": 10021
2026-06-21T01:51:38.3411618Z             }
2026-06-21T01:51:38.3411694Z           ]
2026-06-21T01:51:38.3411789Z         }
2026-06-21T01:51:38.3411872Z       }
2026-06-21T01:51:38.3411957Z     },
2026-06-21T01:51:38.3412047Z     {
2026-06-21T01:51:38.3412152Z       "id": "REQ-SUBNET-6",
2026-06-21T01:51:38.3412859Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-21T01:51:38.3412957Z       "requiredStages": [
2026-06-21T01:51:38.3413044Z         "impl",
2026-06-21T01:51:38.3413131Z         "unit"
2026-06-21T01:51:38.3413220Z       ],
2026-06-21T01:51:38.3413310Z       "stages": {
2026-06-21T01:51:38.3413400Z         "doc": {
2026-06-21T01:51:38.3413496Z           "complete": false,
2026-06-21T01:51:38.3413579Z           "evidence": []
2026-06-21T01:51:38.3413665Z         },
2026-06-21T01:51:38.3413751Z         "impl": {
2026-06-21T01:51:38.3413847Z           "complete": true,
2026-06-21T01:51:38.3413927Z           "evidence": [
2026-06-21T01:51:38.3414022Z             {
2026-06-21T01:51:38.3414147Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.3414233Z               "line": 254
2026-06-21T01:51:38.3414332Z             },
2026-06-21T01:51:38.3414410Z             {
2026-06-21T01:51:38.3414524Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3414748Z               "line": 4475
2026-06-21T01:51:38.3414833Z             },
2026-06-21T01:51:38.3414914Z             {
2026-06-21T01:51:38.3415120Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3415214Z               "line": 4492
2026-06-21T01:51:38.3415300Z             },
2026-06-21T01:51:38.3415392Z             {
2026-06-21T01:51:38.3415496Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3415587Z               "line": 4545
2026-06-21T01:51:38.3415678Z             },
2026-06-21T01:51:38.3415764Z             {
2026-06-21T01:51:38.3415867Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3415952Z               "line": 4568
2026-06-21T01:51:38.3416038Z             }
2026-06-21T01:51:38.3416128Z           ]
2026-06-21T01:51:38.3416203Z         },
2026-06-21T01:51:38.3416293Z         "int": {
2026-06-21T01:51:38.3416390Z           "complete": false,
2026-06-21T01:51:38.3416489Z           "evidence": []
2026-06-21T01:51:38.3416570Z         },
2026-06-21T01:51:38.3416671Z         "unit": {
2026-06-21T01:51:38.3416766Z           "complete": true,
2026-06-21T01:51:38.3416860Z           "evidence": [
2026-06-21T01:51:38.3416952Z             {
2026-06-21T01:51:38.3417057Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3417152Z               "line": 10035
2026-06-21T01:51:38.3417238Z             },
2026-06-21T01:51:38.3417319Z             {
2026-06-21T01:51:38.3417419Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3417509Z               "line": 10068
2026-06-21T01:51:38.3417601Z             },
2026-06-21T01:51:38.3417677Z             {
2026-06-21T01:51:38.3417787Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3417872Z               "line": 10077
2026-06-21T01:51:38.3417959Z             }
2026-06-21T01:51:38.3418049Z           ]
2026-06-21T01:51:38.3418120Z         }
2026-06-21T01:51:38.3418211Z       }
2026-06-21T01:51:38.3418288Z     },
2026-06-21T01:51:38.3418382Z     {
2026-06-21T01:51:38.3418472Z       "id": "REQ-SUBNET-7",
2026-06-21T01:51:38.3420279Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-21T01:51:38.3420374Z       "requiredStages": [
2026-06-21T01:51:38.3420461Z         "impl",
2026-06-21T01:51:38.3420542Z         "unit"
2026-06-21T01:51:38.3420626Z       ],
2026-06-21T01:51:38.3420712Z       "stages": {
2026-06-21T01:51:38.3420804Z         "doc": {
2026-06-21T01:51:38.3420899Z           "complete": false,
2026-06-21T01:51:38.3421017Z           "evidence": []
2026-06-21T01:51:38.3421098Z         },
2026-06-21T01:51:38.3421198Z         "impl": {
2026-06-21T01:51:38.3421277Z           "complete": true,
2026-06-21T01:51:38.3421376Z           "evidence": [
2026-06-21T01:51:38.3421458Z             {
2026-06-21T01:51:38.3421578Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T01:51:38.3421672Z               "line": 17
2026-06-21T01:51:38.3421749Z             },
2026-06-21T01:51:38.3421835Z             {
2026-06-21T01:51:38.3421963Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.3422044Z               "line": 103
2026-06-21T01:51:38.3422131Z             },
2026-06-21T01:51:38.3422217Z             {
2026-06-21T01:51:38.3422335Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:51:38.3422417Z               "line": 312
2026-06-21T01:51:38.3422507Z             },
2026-06-21T01:51:38.3422593Z             {
2026-06-21T01:51:38.3422732Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T01:51:38.3422817Z               "line": 131
2026-06-21T01:51:38.3423023Z             },
2026-06-21T01:51:38.3423113Z             {
2026-06-21T01:51:38.3423391Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.3423479Z               "line": 160
2026-06-21T01:51:38.3423570Z             },
2026-06-21T01:51:38.3423643Z             {
2026-06-21T01:51:38.3423776Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.3423860Z               "line": 447
2026-06-21T01:51:38.3423950Z             },
2026-06-21T01:51:38.3424027Z             {
2026-06-21T01:51:38.3424158Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.3424253Z               "line": 670
2026-06-21T01:51:38.3424335Z             },
2026-06-21T01:51:38.3424426Z             {
2026-06-21T01:51:38.3424549Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.3424640Z               "line": 710
2026-06-21T01:51:38.3424726Z             },
2026-06-21T01:51:38.3424816Z             {
2026-06-21T01:51:38.3424950Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.3425045Z               "line": 766
2026-06-21T01:51:38.3425136Z             },
2026-06-21T01:51:38.3425212Z             {
2026-06-21T01:51:38.3425460Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:51:38.3425541Z               "line": 136
2026-06-21T01:51:38.3425633Z             },
2026-06-21T01:51:38.3425722Z             {
2026-06-21T01:51:38.3425842Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.3425933Z               "line": 139
2026-06-21T01:51:38.3426009Z             }
2026-06-21T01:51:38.3426103Z           ]
2026-06-21T01:51:38.3426190Z         },
2026-06-21T01:51:38.3426282Z         "int": {
2026-06-21T01:51:38.3426385Z           "complete": false,
2026-06-21T01:51:38.3426479Z           "evidence": []
2026-06-21T01:51:38.3426570Z         },
2026-06-21T01:51:38.3426660Z         "unit": {
2026-06-21T01:51:38.3426763Z           "complete": true,
2026-06-21T01:51:38.3426858Z           "evidence": [
2026-06-21T01:51:38.3426950Z             {
2026-06-21T01:51:38.3427083Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T01:51:38.3427169Z               "line": 136
2026-06-21T01:51:38.3427260Z             },
2026-06-21T01:51:38.3427346Z             {
2026-06-21T01:51:38.3427464Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T01:51:38.3427555Z               "line": 156
2026-06-21T01:51:38.3427646Z             },
2026-06-21T01:51:38.3427726Z             {
2026-06-21T01:51:38.3427852Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.3427937Z               "line": 987
2026-06-21T01:51:38.3428022Z             },
2026-06-21T01:51:38.3428113Z             {
2026-06-21T01:51:38.3428223Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:51:38.3428323Z               "line": 1009
2026-06-21T01:51:38.3428422Z             },
2026-06-21T01:51:38.3428509Z             {
2026-06-21T01:51:38.3428641Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:51:38.3428723Z               "line": 1419
2026-06-21T01:51:38.3428810Z             },
2026-06-21T01:51:38.3428895Z             {
2026-06-21T01:51:38.3429130Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:51:38.3429224Z               "line": 1036
2026-06-21T01:51:38.3429304Z             }
2026-06-21T01:51:38.3429403Z           ]
2026-06-21T01:51:38.3429480Z         }
2026-06-21T01:51:38.3429567Z       }
2026-06-21T01:51:38.3429656Z     },
2026-06-21T01:51:38.3429742Z     {
2026-06-21T01:51:38.3429839Z       "id": "REQ-SUBNET-8",
2026-06-21T01:51:38.3430997Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-21T01:51:38.3431240Z       "requiredStages": [
2026-06-21T01:51:38.3431436Z         "impl",
2026-06-21T01:51:38.3431520Z         "unit"
2026-06-21T01:51:38.3431610Z       ],
2026-06-21T01:51:38.3431691Z       "stages": {
2026-06-21T01:51:38.3431782Z         "doc": {
2026-06-21T01:51:38.3431865Z           "complete": false,
2026-06-21T01:51:38.3431951Z           "evidence": []
2026-06-21T01:51:38.3432042Z         },
2026-06-21T01:51:38.3432134Z         "impl": {
2026-06-21T01:51:38.3432228Z           "complete": true,
2026-06-21T01:51:38.3432314Z           "evidence": [
2026-06-21T01:51:38.3432405Z             {
2026-06-21T01:51:38.3432509Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3432599Z               "line": 3835
2026-06-21T01:51:38.3432682Z             },
2026-06-21T01:51:38.3432767Z             {
2026-06-21T01:51:38.3432876Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3432958Z               "line": 3864
2026-06-21T01:51:38.3433053Z             },
2026-06-21T01:51:38.3433130Z             {
2026-06-21T01:51:38.3433243Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3433345Z               "line": 3881
2026-06-21T01:51:38.3433415Z             },
2026-06-21T01:51:38.3433515Z             {
2026-06-21T01:51:38.3433617Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3433716Z               "line": 3904
2026-06-21T01:51:38.3433792Z             },
2026-06-21T01:51:38.3433888Z             {
2026-06-21T01:51:38.3433993Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3434082Z               "line": 4318
2026-06-21T01:51:38.3434183Z             }
2026-06-21T01:51:38.3434270Z           ]
2026-06-21T01:51:38.3434359Z         },
2026-06-21T01:51:38.3434449Z         "int": {
2026-06-21T01:51:38.3434549Z           "complete": false,
2026-06-21T01:51:38.3434630Z           "evidence": []
2026-06-21T01:51:38.3434718Z         },
2026-06-21T01:51:38.3434809Z         "unit": {
2026-06-21T01:51:38.3434900Z           "complete": true,
2026-06-21T01:51:38.3434991Z           "evidence": [
2026-06-21T01:51:38.3435080Z             {
2026-06-21T01:51:38.3435191Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3435291Z               "line": 10225
2026-06-21T01:51:38.3435371Z             },
2026-06-21T01:51:38.3435452Z             {
2026-06-21T01:51:38.3435549Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3435649Z               "line": 10241
2026-06-21T01:51:38.3435729Z             }
2026-06-21T01:51:38.3435820Z           ]
2026-06-21T01:51:38.3435916Z         }
2026-06-21T01:51:38.3436001Z       }
2026-06-21T01:51:38.3436092Z     },
2026-06-21T01:51:38.3436179Z     {
2026-06-21T01:51:38.3436277Z       "id": "REQ-TERM-1",
2026-06-21T01:51:38.3436450Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-21T01:51:38.3436555Z       "requiredStages": [
2026-06-21T01:51:38.3436654Z         "impl",
2026-06-21T01:51:38.3436740Z         "unit"
2026-06-21T01:51:38.3436832Z       ],
2026-06-21T01:51:38.3436921Z       "stages": {
2026-06-21T01:51:38.3437016Z         "doc": {
2026-06-21T01:51:38.3437106Z           "complete": false,
2026-06-21T01:51:38.3437210Z           "evidence": []
2026-06-21T01:51:38.3437295Z         },
2026-06-21T01:51:38.3437380Z         "impl": {
2026-06-21T01:51:38.3437481Z           "complete": true,
2026-06-21T01:51:38.3437567Z           "evidence": [
2026-06-21T01:51:38.3437666Z             {
2026-06-21T01:51:38.3437782Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T01:51:38.3437867Z               "line": 59
2026-06-21T01:51:38.3437957Z             },
2026-06-21T01:51:38.3438038Z             {
2026-06-21T01:51:38.3438153Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T01:51:38.3438239Z               "line": 234
2026-06-21T01:51:38.3438333Z             },
2026-06-21T01:51:38.3438416Z             {
2026-06-21T01:51:38.3438535Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T01:51:38.3438736Z               "line": 100
2026-06-21T01:51:38.3438911Z             }
2026-06-21T01:51:38.3439154Z           ]
2026-06-21T01:51:38.3439240Z         },
2026-06-21T01:51:38.3439336Z         "int": {
2026-06-21T01:51:38.3439427Z           "complete": false,
2026-06-21T01:51:38.3439535Z           "evidence": []
2026-06-21T01:51:38.3439637Z         },
2026-06-21T01:51:38.3439723Z         "unit": {
2026-06-21T01:51:38.3439826Z           "complete": true,
2026-06-21T01:51:38.3439911Z           "evidence": [
2026-06-21T01:51:38.3440002Z             {
2026-06-21T01:51:38.3440127Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T01:51:38.3440225Z               "line": 24
2026-06-21T01:51:38.3440312Z             },
2026-06-21T01:51:38.3440389Z             {
2026-06-21T01:51:38.3440507Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T01:51:38.3440598Z               "line": 56
2026-06-21T01:51:38.3440689Z             }
2026-06-21T01:51:38.3440775Z           ]
2026-06-21T01:51:38.3440860Z         }
2026-06-21T01:51:38.3440951Z       }
2026-06-21T01:51:38.3441032Z     },
2026-06-21T01:51:38.3441113Z     {
2026-06-21T01:51:38.3441198Z       "id": "REQ-TERM-2",
2026-06-21T01:51:38.3441390Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-21T01:51:38.3441476Z       "requiredStages": [
2026-06-21T01:51:38.3441562Z         "impl",
2026-06-21T01:51:38.3441653Z         "unit"
2026-06-21T01:51:38.3441738Z       ],
2026-06-21T01:51:38.3441837Z       "stages": {
2026-06-21T01:51:38.3441920Z         "doc": {
2026-06-21T01:51:38.3442010Z           "complete": false,
2026-06-21T01:51:38.3442104Z           "evidence": []
2026-06-21T01:51:38.3442180Z         },
2026-06-21T01:51:38.3442280Z         "impl": {
2026-06-21T01:51:38.3442374Z           "complete": true,
2026-06-21T01:51:38.3442464Z           "evidence": [
2026-06-21T01:51:38.3442550Z             {
2026-06-21T01:51:38.3442680Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T01:51:38.3442768Z               "line": 117
2026-06-21T01:51:38.3442864Z             },
2026-06-21T01:51:38.3442951Z             {
2026-06-21T01:51:38.3443065Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T01:51:38.3443160Z               "line": 127
2026-06-21T01:51:38.3443247Z             }
2026-06-21T01:51:38.3443337Z           ]
2026-06-21T01:51:38.3443417Z         },
2026-06-21T01:51:38.3443514Z         "int": {
2026-06-21T01:51:38.3443614Z           "complete": false,
2026-06-21T01:51:38.3443704Z           "evidence": []
2026-06-21T01:51:38.3443790Z         },
2026-06-21T01:51:38.3449204Z         "unit": {
2026-06-21T01:51:38.3449338Z           "complete": true,
2026-06-21T01:51:38.3449447Z           "evidence": [
2026-06-21T01:51:38.3449542Z             {
2026-06-21T01:51:38.3449724Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T01:51:38.3449819Z               "line": 46
2026-06-21T01:51:38.3449930Z             },
2026-06-21T01:51:38.3450010Z             {
2026-06-21T01:51:38.3450129Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T01:51:38.3450235Z               "line": 77
2026-06-21T01:51:38.3450325Z             }
2026-06-21T01:51:38.3450419Z           ]
2026-06-21T01:51:38.3450500Z         }
2026-06-21T01:51:38.3450587Z       }
2026-06-21T01:51:38.3450668Z     },
2026-06-21T01:51:38.3450753Z     {
2026-06-21T01:51:38.3450839Z       "id": "REQ-TERM-3",
2026-06-21T01:51:38.3450987Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-21T01:51:38.3451077Z       "requiredStages": [
2026-06-21T01:51:38.3451168Z         "impl",
2026-06-21T01:51:38.3451259Z         "unit"
2026-06-21T01:51:38.3451335Z       ],
2026-06-21T01:51:38.3451425Z       "stages": {
2026-06-21T01:51:38.3451506Z         "doc": {
2026-06-21T01:51:38.3451612Z           "complete": false,
2026-06-21T01:51:38.3451707Z           "evidence": []
2026-06-21T01:51:38.3451782Z         },
2026-06-21T01:51:38.3452074Z         "impl": {
2026-06-21T01:51:38.3452166Z           "complete": true,
2026-06-21T01:51:38.3452260Z           "evidence": [
2026-06-21T01:51:38.3452451Z             {
2026-06-21T01:51:38.3452575Z               "path": "crates/spt-term/src/stream.rs",
2026-06-21T01:51:38.3452659Z               "line": 71
2026-06-21T01:51:38.3452759Z             }
2026-06-21T01:51:38.3452850Z           ]
2026-06-21T01:51:38.3452934Z         },
2026-06-21T01:51:38.3453024Z         "int": {
2026-06-21T01:51:38.3453115Z           "complete": false,
2026-06-21T01:51:38.3453215Z           "evidence": []
2026-06-21T01:51:38.3453306Z         },
2026-06-21T01:51:38.3453381Z         "unit": {
2026-06-21T01:51:38.3453477Z           "complete": true,
2026-06-21T01:51:38.3453563Z           "evidence": [
2026-06-21T01:51:38.3453648Z             {
2026-06-21T01:51:38.3453759Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T01:51:38.3453850Z               "line": 37
2026-06-21T01:51:38.3453939Z             },
2026-06-21T01:51:38.3454025Z             {
2026-06-21T01:51:38.3454136Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T01:51:38.3454231Z               "line": 67
2026-06-21T01:51:38.3454320Z             }
2026-06-21T01:51:38.3454408Z           ]
2026-06-21T01:51:38.3454493Z         }
2026-06-21T01:51:38.3454583Z       }
2026-06-21T01:51:38.3454659Z     },
2026-06-21T01:51:38.3454746Z     {
2026-06-21T01:51:38.3454836Z       "id": "REQ-TERM-4",
2026-06-21T01:51:38.3455318Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-21T01:51:38.3455405Z       "requiredStages": [
2026-06-21T01:51:38.3455499Z         "impl",
2026-06-21T01:51:38.3455593Z         "unit",
2026-06-21T01:51:38.3455669Z         "int"
2026-06-21T01:51:38.3455755Z       ],
2026-06-21T01:51:38.3455834Z       "stages": {
2026-06-21T01:51:38.3455924Z         "doc": {
2026-06-21T01:51:38.3456011Z           "complete": false,
2026-06-21T01:51:38.3456116Z           "evidence": []
2026-06-21T01:51:38.3456200Z         },
2026-06-21T01:51:38.3456282Z         "impl": {
2026-06-21T01:51:38.3456388Z           "complete": true,
2026-06-21T01:51:38.3456478Z           "evidence": [
2026-06-21T01:51:38.3456568Z             {
2026-06-21T01:51:38.3456674Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:51:38.3456769Z               "line": 37
2026-06-21T01:51:38.3456863Z             },
2026-06-21T01:51:38.3456940Z             {
2026-06-21T01:51:38.3457074Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T01:51:38.3457164Z               "line": 25
2026-06-21T01:51:38.3457255Z             },
2026-06-21T01:51:38.3457337Z             {
2026-06-21T01:51:38.3457470Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T01:51:38.3457570Z               "line": 114
2026-06-21T01:51:38.3457652Z             },
2026-06-21T01:51:38.3457750Z             {
2026-06-21T01:51:38.3457870Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T01:51:38.3457972Z               "line": 267
2026-06-21T01:51:38.3458055Z             },
2026-06-21T01:51:38.3458146Z             {
2026-06-21T01:51:38.3458260Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T01:51:38.3458345Z               "line": 289
2026-06-21T01:51:38.3458439Z             },
2026-06-21T01:51:38.3458519Z             {
2026-06-21T01:51:38.3458649Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T01:51:38.3458739Z               "line": 307
2026-06-21T01:51:38.3458824Z             },
2026-06-21T01:51:38.3458917Z             {
2026-06-21T01:51:38.3459125Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T01:51:38.3459217Z               "line": 33
2026-06-21T01:51:38.3459297Z             },
2026-06-21T01:51:38.3459392Z             {
2026-06-21T01:51:38.3459512Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3459760Z               "line": 52
2026-06-21T01:51:38.3459846Z             },
2026-06-21T01:51:38.3459927Z             {
2026-06-21T01:51:38.3460180Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3460265Z               "line": 180
2026-06-21T01:51:38.3460356Z             },
2026-06-21T01:51:38.3460442Z             {
2026-06-21T01:51:38.3460557Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3460646Z               "line": 190
2026-06-21T01:51:38.3460723Z             },
2026-06-21T01:51:38.3460810Z             {
2026-06-21T01:51:38.3460927Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3461022Z               "line": 250
2026-06-21T01:51:38.3461108Z             },
2026-06-21T01:51:38.3461190Z             {
2026-06-21T01:51:38.3461313Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.3461399Z               "line": 284
2026-06-21T01:51:38.3461485Z             },
2026-06-21T01:51:38.3461571Z             {
2026-06-21T01:51:38.3461694Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.3461782Z               "line": 295
2026-06-21T01:51:38.3461867Z             },
2026-06-21T01:51:38.3461952Z             {
2026-06-21T01:51:38.3462062Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3462148Z               "line": 1193
2026-06-21T01:51:38.3462224Z             }
2026-06-21T01:51:38.3462300Z           ]
2026-06-21T01:51:38.3462382Z         },
2026-06-21T01:51:38.3462458Z         "int": {
2026-06-21T01:51:38.3462562Z           "complete": true,
2026-06-21T01:51:38.3462639Z           "evidence": [
2026-06-21T01:51:38.3462716Z             {
2026-06-21T01:51:38.3462834Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-21T01:51:38.3462934Z               "line": 18
2026-06-21T01:51:38.3463021Z             }
2026-06-21T01:51:38.3463102Z           ]
2026-06-21T01:51:38.3463191Z         },
2026-06-21T01:51:38.3463272Z         "unit": {
2026-06-21T01:51:38.3463372Z           "complete": true,
2026-06-21T01:51:38.3463466Z           "evidence": [
2026-06-21T01:51:38.3463560Z             {
2026-06-21T01:51:38.3463684Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:51:38.3463771Z               "line": 364
2026-06-21T01:51:38.3463851Z             },
2026-06-21T01:51:38.3463936Z             {
2026-06-21T01:51:38.3464047Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:51:38.3464142Z               "line": 416
2026-06-21T01:51:38.3464237Z             },
2026-06-21T01:51:38.3464329Z             {
2026-06-21T01:51:38.3464438Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:51:38.3464538Z               "line": 426
2026-06-21T01:51:38.3464619Z             },
2026-06-21T01:51:38.3464710Z             {
2026-06-21T01:51:38.3464829Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T01:51:38.3464924Z               "line": 436
2026-06-21T01:51:38.3465015Z             },
2026-06-21T01:51:38.3465100Z             {
2026-06-21T01:51:38.3465224Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T01:51:38.3465311Z               "line": 456
2026-06-21T01:51:38.3465391Z             },
2026-06-21T01:51:38.3465482Z             {
2026-06-21T01:51:38.3465607Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T01:51:38.3465697Z               "line": 478
2026-06-21T01:51:38.3465772Z             },
2026-06-21T01:51:38.3465864Z             {
2026-06-21T01:51:38.3465984Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T01:51:38.3466082Z               "line": 491
2026-06-21T01:51:38.3466167Z             },
2026-06-21T01:51:38.3466258Z             {
2026-06-21T01:51:38.3466380Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T01:51:38.3466470Z               "line": 502
2026-06-21T01:51:38.3466566Z             },
2026-06-21T01:51:38.3466647Z             {
2026-06-21T01:51:38.3466770Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T01:51:38.3466976Z               "line": 108
2026-06-21T01:51:38.3467066Z             },
2026-06-21T01:51:38.3467239Z             {
2026-06-21T01:51:38.3467358Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T01:51:38.3467462Z               "line": 119
2026-06-21T01:51:38.3467549Z             },
2026-06-21T01:51:38.3467639Z             {
2026-06-21T01:51:38.3467753Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T01:51:38.3467840Z               "line": 127
2026-06-21T01:51:38.3467930Z             },
2026-06-21T01:51:38.3468010Z             {
2026-06-21T01:51:38.3468130Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3468221Z               "line": 474
2026-06-21T01:51:38.3468310Z             },
2026-06-21T01:51:38.3468401Z             {
2026-06-21T01:51:38.3468512Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3468602Z               "line": 501
2026-06-21T01:51:38.3468687Z             },
2026-06-21T01:51:38.3468782Z             {
2026-06-21T01:51:38.3468891Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3469099Z               "line": 520
2026-06-21T01:51:38.3469186Z             },
2026-06-21T01:51:38.3469276Z             {
2026-06-21T01:51:38.3469389Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3469482Z               "line": 535
2026-06-21T01:51:38.3469572Z             },
2026-06-21T01:51:38.3469652Z             {
2026-06-21T01:51:38.3469772Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3469867Z               "line": 561
2026-06-21T01:51:38.3469948Z             },
2026-06-21T01:51:38.3470029Z             {
2026-06-21T01:51:38.3470135Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3470234Z               "line": 581
2026-06-21T01:51:38.3470310Z             },
2026-06-21T01:51:38.3470397Z             {
2026-06-21T01:51:38.3470520Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3470610Z               "line": 591
2026-06-21T01:51:38.3470702Z             },
2026-06-21T01:51:38.3470784Z             {
2026-06-21T01:51:38.3470911Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3470992Z               "line": 683
2026-06-21T01:51:38.3471079Z             },
2026-06-21T01:51:38.3471163Z             {
2026-06-21T01:51:38.3471273Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.3471370Z               "line": 885
2026-06-21T01:51:38.3471460Z             },
2026-06-21T01:51:38.3471544Z             {
2026-06-21T01:51:38.3471654Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3471750Z               "line": 9792
2026-06-21T01:51:38.3471840Z             }
2026-06-21T01:51:38.3471921Z           ]
2026-06-21T01:51:38.3472012Z         }
2026-06-21T01:51:38.3472093Z       }
2026-06-21T01:51:38.3472187Z     },
2026-06-21T01:51:38.3472263Z     {
2026-06-21T01:51:38.3472361Z       "id": "REQ-TERM-5",
2026-06-21T01:51:38.3473898Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-21T01:51:38.3473994Z       "requiredStages": [
2026-06-21T01:51:38.3474082Z         "doc",
2026-06-21T01:51:38.3474177Z         "impl",
2026-06-21T01:51:38.3474269Z         "unit",
2026-06-21T01:51:38.3474350Z         "int"
2026-06-21T01:51:38.3474426Z       ],
2026-06-21T01:51:38.3474521Z       "stages": {
2026-06-21T01:51:38.3474603Z         "doc": {
2026-06-21T01:51:38.3474840Z           "complete": true,
2026-06-21T01:51:38.3474936Z           "evidence": [
2026-06-21T01:51:38.3475117Z             {
2026-06-21T01:51:38.3475228Z               "path": "docs/MANIFEST.md",
2026-06-21T01:51:38.3475318Z               "line": 234
2026-06-21T01:51:38.3475412Z             }
2026-06-21T01:51:38.3475494Z           ]
2026-06-21T01:51:38.3475585Z         },
2026-06-21T01:51:38.3475680Z         "impl": {
2026-06-21T01:51:38.3475774Z           "complete": true,
2026-06-21T01:51:38.3475872Z           "evidence": [
2026-06-21T01:51:38.3475956Z             {
2026-06-21T01:51:38.3476089Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:51:38.3476182Z               "line": 75
2026-06-21T01:51:38.3476271Z             },
2026-06-21T01:51:38.3476357Z             {
2026-06-21T01:51:38.3476477Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:51:38.3476567Z               "line": 131
2026-06-21T01:51:38.3476652Z             },
2026-06-21T01:51:38.3476751Z             {
2026-06-21T01:51:38.3476870Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T01:51:38.3476959Z               "line": 22
2026-06-21T01:51:38.3477044Z             },
2026-06-21T01:51:38.3477126Z             {
2026-06-21T01:51:38.3477241Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T01:51:38.3477335Z               "line": 87
2026-06-21T01:51:38.3477416Z             },
2026-06-21T01:51:38.3477499Z             {
2026-06-21T01:51:38.3477617Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T01:51:38.3477702Z               "line": 30
2026-06-21T01:51:38.3477794Z             },
2026-06-21T01:51:38.3477875Z             {
2026-06-21T01:51:38.3477988Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3478080Z               "line": 103
2026-06-21T01:51:38.3478166Z             },
2026-06-21T01:51:38.3478242Z             {
2026-06-21T01:51:38.3478370Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3478462Z               "line": 167
2026-06-21T01:51:38.3478546Z             },
2026-06-21T01:51:38.3478623Z             {
2026-06-21T01:51:38.3478743Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3478843Z               "line": 434
2026-06-21T01:51:38.3478924Z             },
2026-06-21T01:51:38.3479139Z             {
2026-06-21T01:51:38.3479256Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3479361Z               "line": 5650
2026-06-21T01:51:38.3479451Z             },
2026-06-21T01:51:38.3479545Z             {
2026-06-21T01:51:38.3479659Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3479746Z               "line": 5957
2026-06-21T01:51:38.3479836Z             }
2026-06-21T01:51:38.3479916Z           ]
2026-06-21T01:51:38.3480003Z         },
2026-06-21T01:51:38.3480089Z         "int": {
2026-06-21T01:51:38.3480175Z           "complete": true,
2026-06-21T01:51:38.3480260Z           "evidence": [
2026-06-21T01:51:38.3480347Z             {
2026-06-21T01:51:38.3480499Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T01:51:38.3480594Z               "line": 17
2026-06-21T01:51:38.3480676Z             }
2026-06-21T01:51:38.3480760Z           ]
2026-06-21T01:51:38.3480846Z         },
2026-06-21T01:51:38.3480932Z         "unit": {
2026-06-21T01:51:38.3481024Z           "complete": true,
2026-06-21T01:51:38.3481114Z           "evidence": [
2026-06-21T01:51:38.3481199Z             {
2026-06-21T01:51:38.3481315Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:51:38.3481400Z               "line": 375
2026-06-21T01:51:38.3481490Z             },
2026-06-21T01:51:38.3481577Z             {
2026-06-21T01:51:38.3481691Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T01:51:38.3481781Z               "line": 162
2026-06-21T01:51:38.3481858Z             },
2026-06-21T01:51:38.3481944Z             {
2026-06-21T01:51:38.3482048Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T01:51:38.3482257Z               "line": 179
2026-06-21T01:51:38.3482349Z             },
2026-06-21T01:51:38.3482533Z             {
2026-06-21T01:51:38.3482648Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T01:51:38.3482729Z               "line": 201
2026-06-21T01:51:38.3482819Z             },
2026-06-21T01:51:38.3482902Z             {
2026-06-21T01:51:38.3483011Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T01:51:38.3483105Z               "line": 212
2026-06-21T01:51:38.3483197Z             },
2026-06-21T01:51:38.3483282Z             {
2026-06-21T01:51:38.3483396Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T01:51:38.3483482Z               "line": 223
2026-06-21T01:51:38.3483560Z             },
2026-06-21T01:51:38.3483644Z             {
2026-06-21T01:51:38.3483773Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.3483860Z               "line": 1525
2026-06-21T01:51:38.3483954Z             },
2026-06-21T01:51:38.3484040Z             {
2026-06-21T01:51:38.3484160Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.3484246Z               "line": 1568
2026-06-21T01:51:38.3484331Z             },
2026-06-21T01:51:38.3484420Z             {
2026-06-21T01:51:38.3484540Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3484638Z               "line": 606
2026-06-21T01:51:38.3484718Z             },
2026-06-21T01:51:38.3484809Z             {
2026-06-21T01:51:38.3484920Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3485005Z               "line": 634
2026-06-21T01:51:38.3485091Z             },
2026-06-21T01:51:38.3485172Z             {
2026-06-21T01:51:38.3485291Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3485376Z               "line": 646
2026-06-21T01:51:38.3485464Z             },
2026-06-21T01:51:38.3485544Z             {
2026-06-21T01:51:38.3485663Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3485754Z               "line": 669
2026-06-21T01:51:38.3485830Z             },
2026-06-21T01:51:38.3485916Z             {
2026-06-21T01:51:38.3486020Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3486117Z               "line": 8503
2026-06-21T01:51:38.3486197Z             },
2026-06-21T01:51:38.3486283Z             {
2026-06-21T01:51:38.3486393Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3486483Z               "line": 8561
2026-06-21T01:51:38.3486564Z             }
2026-06-21T01:51:38.3486645Z           ]
2026-06-21T01:51:38.3486737Z         }
2026-06-21T01:51:38.3486831Z       }
2026-06-21T01:51:38.3486912Z     },
2026-06-21T01:51:38.3487004Z     {
2026-06-21T01:51:38.3487094Z       "id": "REQ-TERM-6",
2026-06-21T01:51:38.3488248Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-21T01:51:38.3488388Z       "requiredStages": [
2026-06-21T01:51:38.3488473Z         "impl",
2026-06-21T01:51:38.3488563Z         "unit",
2026-06-21T01:51:38.3488645Z         "int"
2026-06-21T01:51:38.3488731Z       ],
2026-06-21T01:51:38.3488812Z       "stages": {
2026-06-21T01:51:38.3488892Z         "doc": {
2026-06-21T01:51:38.3489083Z           "complete": false,
2026-06-21T01:51:38.3489179Z           "evidence": []
2026-06-21T01:51:38.3489265Z         },
2026-06-21T01:51:38.3489341Z         "impl": {
2026-06-21T01:51:38.3489445Z           "complete": true,
2026-06-21T01:51:38.3489526Z           "evidence": [
2026-06-21T01:51:38.3489609Z             {
2026-06-21T01:51:38.3489727Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:51:38.3489969Z               "line": 132
2026-06-21T01:51:38.3490058Z             },
2026-06-21T01:51:38.3490138Z             {
2026-06-21T01:51:38.3490368Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:51:38.3490457Z               "line": 187
2026-06-21T01:51:38.3490534Z             },
2026-06-21T01:51:38.3490611Z             {
2026-06-21T01:51:38.3490725Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T01:51:38.3490810Z               "line": 17
2026-06-21T01:51:38.3490892Z             },
2026-06-21T01:51:38.3490983Z             {
2026-06-21T01:51:38.3491106Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T01:51:38.3491183Z               "line": 104
2026-06-21T01:51:38.3491274Z             },
2026-06-21T01:51:38.3491354Z             {
2026-06-21T01:51:38.3491478Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3491565Z               "line": 319
2026-06-21T01:51:38.3491650Z             },
2026-06-21T01:51:38.3491740Z             {
2026-06-21T01:51:38.3491865Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3491960Z               "line": 396
2026-06-21T01:51:38.3492041Z             }
2026-06-21T01:51:38.3492127Z           ]
2026-06-21T01:51:38.3492209Z         },
2026-06-21T01:51:38.3492298Z         "int": {
2026-06-21T01:51:38.3492403Z           "complete": true,
2026-06-21T01:51:38.3492490Z           "evidence": [
2026-06-21T01:51:38.3492580Z             {
2026-06-21T01:51:38.3492731Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T01:51:38.3492822Z               "line": 18
2026-06-21T01:51:38.3492909Z             }
2026-06-21T01:51:38.3492998Z           ]
2026-06-21T01:51:38.3493083Z         },
2026-06-21T01:51:38.3493171Z         "unit": {
2026-06-21T01:51:38.3493262Z           "complete": true,
2026-06-21T01:51:38.3493346Z           "evidence": [
2026-06-21T01:51:38.3493438Z             {
2026-06-21T01:51:38.3493556Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T01:51:38.3493660Z               "line": 135
2026-06-21T01:51:38.3493742Z             },
2026-06-21T01:51:38.3493833Z             {
2026-06-21T01:51:38.3493947Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T01:51:38.3494023Z               "line": 150
2026-06-21T01:51:38.3494106Z             },
2026-06-21T01:51:38.3494190Z             {
2026-06-21T01:51:38.3494314Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T01:51:38.3494406Z               "line": 166
2026-06-21T01:51:38.3494482Z             },
2026-06-21T01:51:38.3494566Z             {
2026-06-21T01:51:38.3494677Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T01:51:38.3494778Z               "line": 257
2026-06-21T01:51:38.3494848Z             },
2026-06-21T01:51:38.3494943Z             {
2026-06-21T01:51:38.3495062Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3495147Z               "line": 738
2026-06-21T01:51:38.3495236Z             },
2026-06-21T01:51:38.3495336Z             {
2026-06-21T01:51:38.3495461Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3495555Z               "line": 759
2026-06-21T01:51:38.3495641Z             },
2026-06-21T01:51:38.3495723Z             {
2026-06-21T01:51:38.3495837Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:51:38.3495922Z               "line": 726
2026-06-21T01:51:38.3496004Z             }
2026-06-21T01:51:38.3496090Z           ]
2026-06-21T01:51:38.3496175Z         }
2026-06-21T01:51:38.3496261Z       }
2026-06-21T01:51:38.3496348Z     },
2026-06-21T01:51:38.3496428Z     {
2026-06-21T01:51:38.3496523Z       "id": "REQ-TERM-7",
2026-06-21T01:51:38.3497673Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-21T01:51:38.3497963Z       "requiredStages": [
2026-06-21T01:51:38.3498051Z         "impl",
2026-06-21T01:51:38.3498141Z         "unit",
2026-06-21T01:51:38.3498222Z         "int"
2026-06-21T01:51:38.3498299Z       ],
2026-06-21T01:51:38.3498394Z       "stages": {
2026-06-21T01:51:38.3498475Z         "doc": {
2026-06-21T01:51:38.3498561Z           "complete": false,
2026-06-21T01:51:38.3498652Z           "evidence": []
2026-06-21T01:51:38.3498732Z         },
2026-06-21T01:51:38.3498827Z         "impl": {
2026-06-21T01:51:38.3498915Z           "complete": true,
2026-06-21T01:51:38.3499104Z           "evidence": [
2026-06-21T01:51:38.3499195Z             {
2026-06-21T01:51:38.3499309Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:51:38.3499395Z               "line": 133
2026-06-21T01:51:38.3499481Z             },
2026-06-21T01:51:38.3499577Z             {
2026-06-21T01:51:38.3499695Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:51:38.3499786Z               "line": 326
2026-06-21T01:51:38.3499878Z             },
2026-06-21T01:51:38.3499953Z             {
2026-06-21T01:51:38.3500073Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T01:51:38.3500150Z               "line": 15
2026-06-21T01:51:38.3500240Z             },
2026-06-21T01:51:38.3500320Z             {
2026-06-21T01:51:38.3500443Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T01:51:38.3500529Z               "line": 32
2026-06-21T01:51:38.3500613Z             },
2026-06-21T01:51:38.3500703Z             {
2026-06-21T01:51:38.3500823Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T01:51:38.3500914Z               "line": 49
2026-06-21T01:51:38.3500999Z             },
2026-06-21T01:51:38.3501089Z             {
2026-06-21T01:51:38.3501214Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3501318Z               "line": 286
2026-06-21T01:51:38.3501409Z             },
2026-06-21T01:51:38.3501500Z             {
2026-06-21T01:51:38.3501624Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3501709Z               "line": 320
2026-06-21T01:51:38.3501800Z             }
2026-06-21T01:51:38.3501881Z           ]
2026-06-21T01:51:38.3501962Z         },
2026-06-21T01:51:38.3502048Z         "int": {
2026-06-21T01:51:38.3502130Z           "complete": true,
2026-06-21T01:51:38.3502224Z           "evidence": [
2026-06-21T01:51:38.3502301Z             {
2026-06-21T01:51:38.3502449Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T01:51:38.3502539Z               "line": 19
2026-06-21T01:51:38.3502615Z             }
2026-06-21T01:51:38.3502702Z           ]
2026-06-21T01:51:38.3502779Z         },
2026-06-21T01:51:38.3502863Z         "unit": {
2026-06-21T01:51:38.3502949Z           "complete": true,
2026-06-21T01:51:38.3503046Z           "evidence": [
2026-06-21T01:51:38.3503131Z             {
2026-06-21T01:51:38.3503243Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:51:38.3503334Z               "line": 455
2026-06-21T01:51:38.3503421Z             },
2026-06-21T01:51:38.3503497Z             {
2026-06-21T01:51:38.3503610Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:51:38.3503702Z               "line": 568
2026-06-21T01:51:38.3503783Z             },
2026-06-21T01:51:38.3503868Z             {
2026-06-21T01:51:38.3503983Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T01:51:38.3504055Z               "line": 58
2026-06-21T01:51:38.3504146Z             },
2026-06-21T01:51:38.3504225Z             {
2026-06-21T01:51:38.3504327Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T01:51:38.3504417Z               "line": 77
2026-06-21T01:51:38.3504498Z             },
2026-06-21T01:51:38.3504583Z             {
2026-06-21T01:51:38.3504694Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T01:51:38.3504917Z               "line": 87
2026-06-21T01:51:38.3505004Z             },
2026-06-21T01:51:38.3505170Z             {
2026-06-21T01:51:38.3505290Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T01:51:38.3505376Z               "line": 94
2026-06-21T01:51:38.3505465Z             },
2026-06-21T01:51:38.3505550Z             {
2026-06-21T01:51:38.3505670Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3505758Z               "line": 691
2026-06-21T01:51:38.3505839Z             },
2026-06-21T01:51:38.3505930Z             {
2026-06-21T01:51:38.3506050Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:51:38.3506144Z               "line": 716
2026-06-21T01:51:38.3506225Z             }
2026-06-21T01:51:38.3506312Z           ]
2026-06-21T01:51:38.3506402Z         }
2026-06-21T01:51:38.3506487Z       }
2026-06-21T01:51:38.3506574Z     },
2026-06-21T01:51:38.3506650Z     {
2026-06-21T01:51:38.3506754Z       "id": "REQ-UPD-1",
2026-06-21T01:51:38.3506865Z       "title": "Peer-propagated update over P2P",
2026-06-21T01:51:38.3506969Z       "requiredStages": [
2026-06-21T01:51:38.3507060Z         "impl",
2026-06-21T01:51:38.3507145Z         "unit",
2026-06-21T01:51:38.3507247Z         "int"
2026-06-21T01:51:38.3507331Z       ],
2026-06-21T01:51:38.3507422Z       "stages": {
2026-06-21T01:51:38.3507499Z         "doc": {
2026-06-21T01:51:38.3507595Z           "complete": false,
2026-06-21T01:51:38.3507689Z           "evidence": []
2026-06-21T01:51:38.3507775Z         },
2026-06-21T01:51:38.3507862Z         "impl": {
2026-06-21T01:51:38.3507947Z           "complete": true,
2026-06-21T01:51:38.3508042Z           "evidence": [
2026-06-21T01:51:38.3508129Z             {
2026-06-21T01:51:38.3508252Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:51:38.3508346Z               "line": 28
2026-06-21T01:51:38.3508431Z             },
2026-06-21T01:51:38.3508527Z             {
2026-06-21T01:51:38.3508639Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:51:38.3508739Z               "line": 103
2026-06-21T01:51:38.3508821Z             },
2026-06-21T01:51:38.3508912Z             {
2026-06-21T01:51:38.3509126Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:51:38.3509217Z               "line": 342
2026-06-21T01:51:38.3509306Z             },
2026-06-21T01:51:38.3509383Z             {
2026-06-21T01:51:38.3509508Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3509593Z               "line": 22
2026-06-21T01:51:38.3509679Z             },
2026-06-21T01:51:38.3509765Z             {
2026-06-21T01:51:38.3509884Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3509974Z               "line": 207
2026-06-21T01:51:38.3510056Z             },
2026-06-21T01:51:38.3510142Z             {
2026-06-21T01:51:38.3510246Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3510341Z               "line": 283
2026-06-21T01:51:38.3510434Z             },
2026-06-21T01:51:38.3510513Z             {
2026-06-21T01:51:38.3510628Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3510715Z               "line": 340
2026-06-21T01:51:38.3510800Z             },
2026-06-21T01:51:38.3510880Z             {
2026-06-21T01:51:38.3510993Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T01:51:38.3511085Z               "line": 37
2026-06-21T01:51:38.3511169Z             }
2026-06-21T01:51:38.3511249Z           ]
2026-06-21T01:51:38.3511320Z         },
2026-06-21T01:51:38.3511397Z         "int": {
2026-06-21T01:51:38.3511484Z           "complete": true,
2026-06-21T01:51:38.3511578Z           "evidence": [
2026-06-21T01:51:38.3511668Z             {
2026-06-21T01:51:38.3511793Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:51:38.3511873Z               "line": 207
2026-06-21T01:51:38.3511954Z             },
2026-06-21T01:51:38.3512264Z             {
2026-06-21T01:51:38.3512384Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:51:38.3512584Z               "line": 1082
2026-06-21T01:51:38.3512671Z             }
2026-06-21T01:51:38.3512751Z           ]
2026-06-21T01:51:38.3512842Z         },
2026-06-21T01:51:38.3512928Z         "unit": {
2026-06-21T01:51:38.3513024Z           "complete": true,
2026-06-21T01:51:38.3513113Z           "evidence": [
2026-06-21T01:51:38.3513213Z             {
2026-06-21T01:51:38.3513343Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3513437Z               "line": 490
2026-06-21T01:51:38.3513533Z             },
2026-06-21T01:51:38.3513611Z             {
2026-06-21T01:51:38.3513742Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3513823Z               "line": 616
2026-06-21T01:51:38.3513923Z             },
2026-06-21T01:51:38.3514014Z             {
2026-06-21T01:51:38.3514146Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T01:51:38.3514248Z               "line": 277
2026-06-21T01:51:38.3514329Z             },
2026-06-21T01:51:38.3514428Z             {
2026-06-21T01:51:38.3514538Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T01:51:38.3514634Z               "line": 124
2026-06-21T01:51:38.3514725Z             },
2026-06-21T01:51:38.3514804Z             {
2026-06-21T01:51:38.3514925Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T01:51:38.3515015Z               "line": 200
2026-06-21T01:51:38.3515100Z             }
2026-06-21T01:51:38.3515192Z           ]
2026-06-21T01:51:38.3515273Z         }
2026-06-21T01:51:38.3515353Z       }
2026-06-21T01:51:38.3515439Z     },
2026-06-21T01:51:38.3515527Z     {
2026-06-21T01:51:38.3515617Z       "id": "REQ-UPD-2",
2026-06-21T01:51:38.3515773Z       "title": "All binaries signature-verified before handoff",
2026-06-21T01:51:38.3515874Z       "requiredStages": [
2026-06-21T01:51:38.3515959Z         "impl",
2026-06-21T01:51:38.3516053Z         "unit"
2026-06-21T01:51:38.3516139Z       ],
2026-06-21T01:51:38.3516230Z       "stages": {
2026-06-21T01:51:38.3516323Z         "doc": {
2026-06-21T01:51:38.3516427Z           "complete": false,
2026-06-21T01:51:38.3516518Z           "evidence": []
2026-06-21T01:51:38.3516610Z         },
2026-06-21T01:51:38.3516709Z         "impl": {
2026-06-21T01:51:38.3521900Z           "complete": true,
2026-06-21T01:51:38.3522034Z           "evidence": [
2026-06-21T01:51:38.3522133Z             {
2026-06-21T01:51:38.3522277Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:51:38.3522372Z               "line": 343
2026-06-21T01:51:38.3522462Z             },
2026-06-21T01:51:38.3522548Z             {
2026-06-21T01:51:38.3522677Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:51:38.3522772Z               "line": 476
2026-06-21T01:51:38.3522854Z             },
2026-06-21T01:51:38.3522944Z             {
2026-06-21T01:51:38.3523073Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3523173Z               "line": 29
2026-06-21T01:51:38.3523269Z             },
2026-06-21T01:51:38.3523345Z             {
2026-06-21T01:51:38.3523459Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3523551Z               "line": 271
2026-06-21T01:51:38.3523645Z             },
2026-06-21T01:51:38.3523735Z             {
2026-06-21T01:51:38.3523851Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3523941Z               "line": 288
2026-06-21T01:51:38.3524017Z             },
2026-06-21T01:51:38.3524108Z             {
2026-06-21T01:51:38.3524223Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3524316Z               "line": 408
2026-06-21T01:51:38.3524406Z             },
2026-06-21T01:51:38.3524488Z             {
2026-06-21T01:51:38.3524603Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3524693Z               "line": 558
2026-06-21T01:51:38.3524993Z             },
2026-06-21T01:51:38.3525079Z             {
2026-06-21T01:51:38.3525199Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:51:38.3525399Z               "line": 155
2026-06-21T01:51:38.3525471Z             }
2026-06-21T01:51:38.3525552Z           ]
2026-06-21T01:51:38.3525632Z         },
2026-06-21T01:51:38.3525723Z         "int": {
2026-06-21T01:51:38.3525814Z           "complete": false,
2026-06-21T01:51:38.3525909Z           "evidence": []
2026-06-21T01:51:38.3525994Z         },
2026-06-21T01:51:38.3526072Z         "unit": {
2026-06-21T01:51:38.3526167Z           "complete": true,
2026-06-21T01:51:38.3526256Z           "evidence": [
2026-06-21T01:51:38.3526343Z             {
2026-06-21T01:51:38.3526458Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3526552Z               "line": 750
2026-06-21T01:51:38.3526637Z             },
2026-06-21T01:51:38.3526714Z             {
2026-06-21T01:51:38.3526837Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3526930Z               "line": 811
2026-06-21T01:51:38.3527021Z             },
2026-06-21T01:51:38.3527108Z             {
2026-06-21T01:51:38.3527236Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3527326Z               "line": 825
2026-06-21T01:51:38.3527408Z             },
2026-06-21T01:51:38.3527494Z             {
2026-06-21T01:51:38.3527607Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3527699Z               "line": 841
2026-06-21T01:51:38.3527785Z             },
2026-06-21T01:51:38.3527870Z             {
2026-06-21T01:51:38.3527990Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3528071Z               "line": 932
2026-06-21T01:51:38.3528161Z             },
2026-06-21T01:51:38.3528232Z             {
2026-06-21T01:51:38.3528343Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:51:38.3528433Z               "line": 414
2026-06-21T01:51:38.3528528Z             },
2026-06-21T01:51:38.3528619Z             {
2026-06-21T01:51:38.3528724Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:51:38.3528819Z               "line": 427
2026-06-21T01:51:38.3528905Z             },
2026-06-21T01:51:38.3529100Z             {
2026-06-21T01:51:38.3529234Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T01:51:38.3529326Z               "line": 410
2026-06-21T01:51:38.3529410Z             }
2026-06-21T01:51:38.3529495Z           ]
2026-06-21T01:51:38.3529581Z         }
2026-06-21T01:51:38.3529657Z       }
2026-06-21T01:51:38.3529737Z     },
2026-06-21T01:51:38.3529826Z     {
2026-06-21T01:51:38.3529917Z       "id": "REQ-UPD-3",
2026-06-21T01:51:38.3530098Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-21T01:51:38.3530188Z       "requiredStages": [
2026-06-21T01:51:38.3530280Z         "impl",
2026-06-21T01:51:38.3530371Z         "unit",
2026-06-21T01:51:38.3530455Z         "int"
2026-06-21T01:51:38.3530552Z       ],
2026-06-21T01:51:38.3530628Z       "stages": {
2026-06-21T01:51:38.3530719Z         "doc": {
2026-06-21T01:51:38.3530808Z           "complete": false,
2026-06-21T01:51:38.3530905Z           "evidence": []
2026-06-21T01:51:38.3530994Z         },
2026-06-21T01:51:38.3531080Z         "impl": {
2026-06-21T01:51:38.3531166Z           "complete": true,
2026-06-21T01:51:38.3531249Z           "evidence": [
2026-06-21T01:51:38.3531338Z             {
2026-06-21T01:51:38.3531462Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:51:38.3531558Z               "line": 40
2026-06-21T01:51:38.3531643Z             },
2026-06-21T01:51:38.3531734Z             {
2026-06-21T01:51:38.3531849Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:51:38.3531939Z               "line": 87
2026-06-21T01:51:38.3532024Z             },
2026-06-21T01:51:38.3532104Z             {
2026-06-21T01:51:38.3532219Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:51:38.3532426Z               "line": 1042
2026-06-21T01:51:38.3532517Z             },
2026-06-21T01:51:38.3532708Z             {
2026-06-21T01:51:38.3532823Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:51:38.3532918Z               "line": 1843
2026-06-21T01:51:38.3532998Z             },
2026-06-21T01:51:38.3533084Z             {
2026-06-21T01:51:38.3533199Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:51:38.3533294Z               "line": 26
2026-06-21T01:51:38.3533380Z             },
2026-06-21T01:51:38.3533467Z             {
2026-06-21T01:51:38.3533580Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:51:38.3533671Z               "line": 114
2026-06-21T01:51:38.3533757Z             },
2026-06-21T01:51:38.3533834Z             {
2026-06-21T01:51:38.3533952Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:51:38.3534048Z               "line": 246
2026-06-21T01:51:38.3534121Z             },
2026-06-21T01:51:38.3534210Z             {
2026-06-21T01:51:38.3534320Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3534406Z               "line": 2442
2026-06-21T01:51:38.3534491Z             }
2026-06-21T01:51:38.3534567Z           ]
2026-06-21T01:51:38.3534653Z         },
2026-06-21T01:51:38.3534726Z         "int": {
2026-06-21T01:51:38.3534820Z           "complete": true,
2026-06-21T01:51:38.3534900Z           "evidence": [
2026-06-21T01:51:38.3534990Z             {
2026-06-21T01:51:38.3535106Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T01:51:38.3535196Z               "line": 58
2026-06-21T01:51:38.3535286Z             }
2026-06-21T01:51:38.3535368Z           ]
2026-06-21T01:51:38.3535454Z         },
2026-06-21T01:51:38.3535534Z         "unit": {
2026-06-21T01:51:38.3535634Z           "complete": true,
2026-06-21T01:51:38.3535712Z           "evidence": [
2026-06-21T01:51:38.3535802Z             {
2026-06-21T01:51:38.3535939Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:51:38.3536031Z               "line": 532
2026-06-21T01:51:38.3536121Z             },
2026-06-21T01:51:38.3536206Z             {
2026-06-21T01:51:38.3536337Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:51:38.3536426Z               "line": 585
2026-06-21T01:51:38.3536521Z             },
2026-06-21T01:51:38.3536608Z             {
2026-06-21T01:51:38.3536727Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:51:38.3536821Z               "line": 653
2026-06-21T01:51:38.3536903Z             },
2026-06-21T01:51:38.3536995Z             {
2026-06-21T01:51:38.3537108Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:51:38.3537202Z               "line": 1102
2026-06-21T01:51:38.3537288Z             },
2026-06-21T01:51:38.3537359Z             {
2026-06-21T01:51:38.3537481Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:51:38.3537567Z               "line": 271
2026-06-21T01:51:38.3537658Z             },
2026-06-21T01:51:38.3537744Z             {
2026-06-21T01:51:38.3537877Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:51:38.3537968Z               "line": 295
2026-06-21T01:51:38.3538044Z             },
2026-06-21T01:51:38.3538134Z             {
2026-06-21T01:51:38.3538245Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:51:38.3538345Z               "line": 316
2026-06-21T01:51:38.3538430Z             },
2026-06-21T01:51:38.3538516Z             {
2026-06-21T01:51:38.3538640Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:51:38.3538721Z               "line": 332
2026-06-21T01:51:38.3538811Z             }
2026-06-21T01:51:38.3538894Z           ]
2026-06-21T01:51:38.3539079Z         }
2026-06-21T01:51:38.3539179Z       }
2026-06-21T01:51:38.3539261Z     },
2026-06-21T01:51:38.3539355Z     {
2026-06-21T01:51:38.3539436Z       "id": "REQ-UPD-4",
2026-06-21T01:51:38.3539618Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-21T01:51:38.3539843Z       "requiredStages": [
2026-06-21T01:51:38.3539933Z         "impl",
2026-06-21T01:51:38.3540126Z         "unit"
2026-06-21T01:51:38.3540207Z       ],
2026-06-21T01:51:38.3540297Z       "stages": {
2026-06-21T01:51:38.3540381Z         "doc": {
2026-06-21T01:51:38.3540477Z           "complete": false,
2026-06-21T01:51:38.3540564Z           "evidence": []
2026-06-21T01:51:38.3540649Z         },
2026-06-21T01:51:38.3540734Z         "impl": {
2026-06-21T01:51:38.3540826Z           "complete": true,
2026-06-21T01:51:38.3540916Z           "evidence": [
2026-06-21T01:51:38.3540997Z             {
2026-06-21T01:51:38.3541122Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:51:38.3541212Z               "line": 41
2026-06-21T01:51:38.3541302Z             },
2026-06-21T01:51:38.3541388Z             {
2026-06-21T01:51:38.3541513Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:51:38.3541598Z               "line": 88
2026-06-21T01:51:38.3541688Z             },
2026-06-21T01:51:38.3541775Z             {
2026-06-21T01:51:38.3541893Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T01:51:38.3541988Z               "line": 23
2026-06-21T01:51:38.3542081Z             },
2026-06-21T01:51:38.3542157Z             {
2026-06-21T01:51:38.3542270Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T01:51:38.3542361Z               "line": 56
2026-06-21T01:51:38.3542448Z             },
2026-06-21T01:51:38.3542523Z             {
2026-06-21T01:51:38.3542636Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T01:51:38.3542731Z               "line": 77
2026-06-21T01:51:38.3542812Z             },
2026-06-21T01:51:38.3542905Z             {
2026-06-21T01:51:38.3543015Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:51:38.3543111Z               "line": 236
2026-06-21T01:51:38.3543192Z             },
2026-06-21T01:51:38.3543277Z             {
2026-06-21T01:51:38.3543393Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:51:38.3543483Z               "line": 108
2026-06-21T01:51:38.3543582Z             },
2026-06-21T01:51:38.3543664Z             {
2026-06-21T01:51:38.3543788Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.3543878Z               "line": 270
2026-06-21T01:51:38.3543969Z             },
2026-06-21T01:51:38.3544056Z             {
2026-06-21T01:51:38.3544155Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3544250Z               "line": 2441
2026-06-21T01:51:38.3544322Z             }
2026-06-21T01:51:38.3544413Z           ]
2026-06-21T01:51:38.3544489Z         },
2026-06-21T01:51:38.3544584Z         "int": {
2026-06-21T01:51:38.3544685Z           "complete": false,
2026-06-21T01:51:38.3544774Z           "evidence": []
2026-06-21T01:51:38.3544860Z         },
2026-06-21T01:51:38.3544933Z         "unit": {
2026-06-21T01:51:38.3545029Z           "complete": true,
2026-06-21T01:51:38.3545117Z           "evidence": [
2026-06-21T01:51:38.3545209Z             {
2026-06-21T01:51:38.3545329Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:51:38.3545418Z               "line": 581
2026-06-21T01:51:38.3545508Z             },
2026-06-21T01:51:38.3545594Z             {
2026-06-21T01:51:38.3545723Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:51:38.3545813Z               "line": 706
2026-06-21T01:51:38.3545899Z             },
2026-06-21T01:51:38.3545990Z             {
2026-06-21T01:51:38.3546108Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:51:38.3546199Z               "line": 384
2026-06-21T01:51:38.3546277Z             },
2026-06-21T01:51:38.3546357Z             {
2026-06-21T01:51:38.3546481Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T01:51:38.3546577Z               "line": 102
2026-06-21T01:51:38.3546662Z             },
2026-06-21T01:51:38.3546752Z             {
2026-06-21T01:51:38.3546882Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T01:51:38.3547077Z               "line": 123
2026-06-21T01:51:38.3547168Z             },
2026-06-21T01:51:38.3547348Z             {
2026-06-21T01:51:38.3547477Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T01:51:38.3547578Z               "line": 142
2026-06-21T01:51:38.3547653Z             },
2026-06-21T01:51:38.3547743Z             {
2026-06-21T01:51:38.3547853Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:51:38.3547947Z               "line": 582
2026-06-21T01:51:38.3548032Z             },
2026-06-21T01:51:38.3548103Z             {
2026-06-21T01:51:38.3548228Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:51:38.3548313Z               "line": 566
2026-06-21T01:51:38.3548398Z             },
2026-06-21T01:51:38.3548480Z             {
2026-06-21T01:51:38.3548590Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3548671Z               "line": 8256
2026-06-21T01:51:38.3548761Z             }
2026-06-21T01:51:38.3548843Z           ]
2026-06-21T01:51:38.3548929Z         }
2026-06-21T01:51:38.3549100Z       }
2026-06-21T01:51:38.3549186Z     },
2026-06-21T01:51:38.3549272Z     {
2026-06-21T01:51:38.3549362Z       "id": "REQ-UPD-5",
2026-06-21T01:51:38.3549515Z       "title": "spt-core ripple-updates registered adapters",
2026-06-21T01:51:38.3549610Z       "requiredStages": [
2026-06-21T01:51:38.3549686Z         "impl",
2026-06-21T01:51:38.3549769Z         "unit"
2026-06-21T01:51:38.3549854Z       ],
2026-06-21T01:51:38.3549944Z       "stages": {
2026-06-21T01:51:38.3550030Z         "doc": {
2026-06-21T01:51:38.3550131Z           "complete": false,
2026-06-21T01:51:38.3550215Z           "evidence": []
2026-06-21T01:51:38.3550297Z         },
2026-06-21T01:51:38.3550388Z         "impl": {
2026-06-21T01:51:38.3550479Z           "complete": true,
2026-06-21T01:51:38.3550568Z           "evidence": [
2026-06-21T01:51:38.3550648Z             {
2026-06-21T01:51:38.3550791Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:51:38.3550890Z               "line": 27
2026-06-21T01:51:38.3550980Z             },
2026-06-21T01:51:38.3551062Z             {
2026-06-21T01:51:38.3551181Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:51:38.3551270Z               "line": 87
2026-06-21T01:51:38.3551357Z             },
2026-06-21T01:51:38.3551439Z             {
2026-06-21T01:51:38.3551571Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:51:38.3551657Z               "line": 145
2026-06-21T01:51:38.3551749Z             },
2026-06-21T01:51:38.3551830Z             {
2026-06-21T01:51:38.3551958Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3552058Z               "line": 492
2026-06-21T01:51:38.3552138Z             },
2026-06-21T01:51:38.3552224Z             {
2026-06-21T01:51:38.3552326Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3552421Z               "line": 546
2026-06-21T01:51:38.3552506Z             }
2026-06-21T01:51:38.3552592Z           ]
2026-06-21T01:51:38.3552678Z         },
2026-06-21T01:51:38.3552773Z         "int": {
2026-06-21T01:51:38.3552859Z           "complete": false,
2026-06-21T01:51:38.3552946Z           "evidence": []
2026-06-21T01:51:38.3553036Z         },
2026-06-21T01:51:38.3553120Z         "unit": {
2026-06-21T01:51:38.3553220Z           "complete": true,
2026-06-21T01:51:38.3553306Z           "evidence": [
2026-06-21T01:51:38.3553391Z             {
2026-06-21T01:51:38.3553523Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:51:38.3553609Z               "line": 272
2026-06-21T01:51:38.3553705Z             },
2026-06-21T01:51:38.3553785Z             {
2026-06-21T01:51:38.3553914Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:51:38.3554000Z               "line": 286
2026-06-21T01:51:38.3554077Z             },
2026-06-21T01:51:38.3554166Z             {
2026-06-21T01:51:38.3554420Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:51:38.3554519Z               "line": 300
2026-06-21T01:51:38.3554705Z             },
2026-06-21T01:51:38.3554796Z             {
2026-06-21T01:51:38.3554926Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:51:38.3555010Z               "line": 314
2026-06-21T01:51:38.3555101Z             },
2026-06-21T01:51:38.3555183Z             {
2026-06-21T01:51:38.3555311Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:51:38.3555401Z               "line": 348
2026-06-21T01:51:38.3555493Z             },
2026-06-21T01:51:38.3555589Z             {
2026-06-21T01:51:38.3555702Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.3555793Z               "line": 1071
2026-06-21T01:51:38.3555875Z             }
2026-06-21T01:51:38.3555960Z           ]
2026-06-21T01:51:38.3556044Z         }
2026-06-21T01:51:38.3556135Z       }
2026-06-21T01:51:38.3556221Z     },
2026-06-21T01:51:38.3556307Z     {
2026-06-21T01:51:38.3556402Z       "id": "REQ-UPD-6",
2026-06-21T01:51:38.3557213Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-21T01:51:38.3557322Z       "requiredStages": [
2026-06-21T01:51:38.3557408Z         "doc",
2026-06-21T01:51:38.3557486Z         "impl",
2026-06-21T01:51:38.3557575Z         "unit",
2026-06-21T01:51:38.3557661Z         "int"
2026-06-21T01:51:38.3557747Z       ],
2026-06-21T01:51:38.3557824Z       "stages": {
2026-06-21T01:51:38.3557908Z         "doc": {
2026-06-21T01:51:38.3557994Z           "complete": true,
2026-06-21T01:51:38.3558081Z           "evidence": [
2026-06-21T01:51:38.3558167Z             {
2026-06-21T01:51:38.3558303Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T01:51:38.3558394Z               "line": 3
2026-06-21T01:51:38.3558475Z             },
2026-06-21T01:51:38.3558559Z             {
2026-06-21T01:51:38.3558677Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-21T01:51:38.3558764Z               "line": 3
2026-06-21T01:51:38.3558855Z             },
2026-06-21T01:51:38.3558935Z             {
2026-06-21T01:51:38.3559193Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-21T01:51:38.3559274Z               "line": 3
2026-06-21T01:51:38.3559365Z             }
2026-06-21T01:51:38.3559455Z           ]
2026-06-21T01:51:38.3559536Z         },
2026-06-21T01:51:38.3559626Z         "impl": {
2026-06-21T01:51:38.3559723Z           "complete": true,
2026-06-21T01:51:38.3559804Z           "evidence": [
2026-06-21T01:51:38.3559889Z             {
2026-06-21T01:51:38.3560019Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:51:38.3560113Z               "line": 76
2026-06-21T01:51:38.3560194Z             },
2026-06-21T01:51:38.3560285Z             {
2026-06-21T01:51:38.3560404Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:51:38.3560494Z               "line": 212
2026-06-21T01:51:38.3560580Z             },
2026-06-21T01:51:38.3560653Z             {
2026-06-21T01:51:38.3560785Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:51:38.3560872Z               "line": 69
2026-06-21T01:51:38.3560953Z             },
2026-06-21T01:51:38.3561034Z             {
2026-06-21T01:51:38.3561152Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:51:38.3561242Z               "line": 133
2026-06-21T01:51:38.3561328Z             },
2026-06-21T01:51:38.3561412Z             {
2026-06-21T01:51:38.3561520Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:51:38.3561607Z               "line": 243
2026-06-21T01:51:38.3561689Z             },
2026-06-21T01:51:38.3561774Z             {
2026-06-21T01:51:38.3561893Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:51:38.3562098Z               "line": 406
2026-06-21T01:51:38.3562188Z             },
2026-06-21T01:51:38.3562356Z             {
2026-06-21T01:51:38.3562483Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:51:38.3562571Z               "line": 534
2026-06-21T01:51:38.3562661Z             },
2026-06-21T01:51:38.3562780Z             {
2026-06-21T01:51:38.3562962Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:51:38.3563076Z               "line": 548
2026-06-21T01:51:38.3563157Z             },
2026-06-21T01:51:38.3563248Z             {
2026-06-21T01:51:38.3563366Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:51:38.3563462Z               "line": 603
2026-06-21T01:51:38.3563553Z             },
2026-06-21T01:51:38.3563634Z             {
2026-06-21T01:51:38.3563747Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:51:38.3563847Z               "line": 634
2026-06-21T01:51:38.3563942Z             },
2026-06-21T01:51:38.3564026Z             {
2026-06-21T01:51:38.3564150Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T01:51:38.3564241Z               "line": 137
2026-06-21T01:51:38.3564317Z             },
2026-06-21T01:51:38.3564402Z             {
2026-06-21T01:51:38.3564527Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T01:51:38.3564613Z               "line": 184
2026-06-21T01:51:38.3564697Z             },
2026-06-21T01:51:38.3564789Z             {
2026-06-21T01:51:38.3564913Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3564999Z               "line": 78
2026-06-21T01:51:38.3565084Z             },
2026-06-21T01:51:38.3565166Z             {
2026-06-21T01:51:38.3565280Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3565370Z               "line": 114
2026-06-21T01:51:38.3565452Z             },
2026-06-21T01:51:38.3565538Z             {
2026-06-21T01:51:38.3565642Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3565728Z               "line": 185
2026-06-21T01:51:38.3565815Z             },
2026-06-21T01:51:38.3565904Z             {
2026-06-21T01:51:38.3566014Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3566101Z               "line": 260
2026-06-21T01:51:38.3566191Z             },
2026-06-21T01:51:38.3566267Z             {
2026-06-21T01:51:38.3566378Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3566473Z               "line": 292
2026-06-21T01:51:38.3566557Z             },
2026-06-21T01:51:38.3566642Z             {
2026-06-21T01:51:38.3566757Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3566854Z               "line": 323
2026-06-21T01:51:38.3566933Z             },
2026-06-21T01:51:38.3567024Z             {
2026-06-21T01:51:38.3567143Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3567243Z               "line": 346
2026-06-21T01:51:38.3567339Z             },
2026-06-21T01:51:38.3567421Z             {
2026-06-21T01:51:38.3567544Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3567634Z               "line": 388
2026-06-21T01:51:38.3567721Z             },
2026-06-21T01:51:38.3567806Z             {
2026-06-21T01:51:38.3567925Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3568022Z               "line": 398
2026-06-21T01:51:38.3568111Z             },
2026-06-21T01:51:38.3568197Z             {
2026-06-21T01:51:38.3568313Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3568408Z               "line": 410
2026-06-21T01:51:38.3568487Z             },
2026-06-21T01:51:38.3568574Z             {
2026-06-21T01:51:38.3568695Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3568778Z               "line": 420
2026-06-21T01:51:38.3568868Z             },
2026-06-21T01:51:38.3569035Z             {
2026-06-21T01:51:38.3569339Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3569424Z               "line": 439
2026-06-21T01:51:38.3569610Z             },
2026-06-21T01:51:38.3569701Z             {
2026-06-21T01:51:38.3569819Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3569911Z               "line": 449
2026-06-21T01:51:38.3569987Z             },
2026-06-21T01:51:38.3570077Z             {
2026-06-21T01:51:38.3570181Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3570274Z               "line": 94
2026-06-21T01:51:38.3570364Z             },
2026-06-21T01:51:38.3570449Z             {
2026-06-21T01:51:38.3570569Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3570645Z               "line": 120
2026-06-21T01:51:38.3570735Z             },
2026-06-21T01:51:38.3570821Z             {
2026-06-21T01:51:38.3570936Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3571030Z               "line": 135
2026-06-21T01:51:38.3571112Z             },
2026-06-21T01:51:38.3571199Z             {
2026-06-21T01:51:38.3571317Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3571412Z               "line": 162
2026-06-21T01:51:38.3571495Z             },
2026-06-21T01:51:38.3571576Z             {
2026-06-21T01:51:38.3571688Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3571768Z               "line": 174
2026-06-21T01:51:38.3571864Z             },
2026-06-21T01:51:38.3571944Z             {
2026-06-21T01:51:38.3572067Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3572167Z               "line": 185
2026-06-21T01:51:38.3572249Z             },
2026-06-21T01:51:38.3572344Z             {
2026-06-21T01:51:38.3572463Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3572554Z               "line": 451
2026-06-21T01:51:38.3572639Z             },
2026-06-21T01:51:38.3572729Z             {
2026-06-21T01:51:38.3572845Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3572940Z               "line": 573
2026-06-21T01:51:38.3573030Z             },
2026-06-21T01:51:38.3573111Z             {
2026-06-21T01:51:38.3573221Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:51:38.3573311Z               "line": 171
2026-06-21T01:51:38.3573402Z             },
2026-06-21T01:51:38.3573493Z             {
2026-06-21T01:51:38.3573611Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T01:51:38.3573702Z               "line": 65
2026-06-21T01:51:38.3573790Z             },
2026-06-21T01:51:38.3573884Z             {
2026-06-21T01:51:38.3573998Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T01:51:38.3574090Z               "line": 71
2026-06-21T01:51:38.3574180Z             },
2026-06-21T01:51:38.3574264Z             {
2026-06-21T01:51:38.3574378Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T01:51:38.3574464Z               "line": 77
2026-06-21T01:51:38.3574553Z             },
2026-06-21T01:51:38.3574628Z             {
2026-06-21T01:51:38.3574744Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:51:38.3574840Z               "line": 778
2026-06-21T01:51:38.3574920Z             },
2026-06-21T01:51:38.3575005Z             {
2026-06-21T01:51:38.3575111Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:51:38.3575206Z               "line": 795
2026-06-21T01:51:38.3575286Z             },
2026-06-21T01:51:38.3575364Z             {
2026-06-21T01:51:38.3575478Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:51:38.3575568Z               "line": 838
2026-06-21T01:51:38.3575659Z             },
2026-06-21T01:51:38.3575745Z             {
2026-06-21T01:51:38.3575850Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:51:38.3575945Z               "line": 981
2026-06-21T01:51:38.3576027Z             },
2026-06-21T01:51:38.3576117Z             {
2026-06-21T01:51:38.3576323Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:51:38.3576417Z               "line": 1131
2026-06-21T01:51:38.3576603Z             }
2026-06-21T01:51:38.3576695Z           ]
2026-06-21T01:51:38.3576789Z         },
2026-06-21T01:51:38.3576874Z         "int": {
2026-06-21T01:51:38.3576981Z           "complete": true,
2026-06-21T01:51:38.3577075Z           "evidence": [
2026-06-21T01:51:38.3577188Z             {
2026-06-21T01:51:38.3577375Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T01:51:38.3577503Z               "line": 569
2026-06-21T01:51:38.3577599Z             },
2026-06-21T01:51:38.3577676Z             {
2026-06-21T01:51:38.3577794Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T01:51:38.3577879Z               "line": 135
2026-06-21T01:51:38.3577981Z             }
2026-06-21T01:51:38.3578067Z           ]
2026-06-21T01:51:38.3578161Z         },
2026-06-21T01:51:38.3578248Z         "unit": {
2026-06-21T01:51:38.3578338Z           "complete": true,
2026-06-21T01:51:38.3578447Z           "evidence": [
2026-06-21T01:51:38.3578519Z             {
2026-06-21T01:51:38.3578658Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:51:38.3578748Z               "line": 626
2026-06-21T01:51:38.3578838Z             },
2026-06-21T01:51:38.3578930Z             {
2026-06-21T01:51:38.3579139Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:51:38.3579235Z               "line": 675
2026-06-21T01:51:38.3579315Z             },
2026-06-21T01:51:38.3579405Z             {
2026-06-21T01:51:38.3579524Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:51:38.3579623Z               "line": 696
2026-06-21T01:51:38.3579707Z             },
2026-06-21T01:51:38.3579788Z             {
2026-06-21T01:51:38.3579918Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3579999Z               "line": 513
2026-06-21T01:51:38.3580093Z             },
2026-06-21T01:51:38.3580180Z             {
2026-06-21T01:51:38.3580304Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3580394Z               "line": 638
2026-06-21T01:51:38.3580480Z             },
2026-06-21T01:51:38.3580561Z             {
2026-06-21T01:51:38.3580684Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3580771Z               "line": 675
2026-06-21T01:51:38.3580853Z             },
2026-06-21T01:51:38.3580938Z             {
2026-06-21T01:51:38.3581047Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3581139Z               "line": 947
2026-06-21T01:51:38.3581224Z             },
2026-06-21T01:51:38.3581305Z             {
2026-06-21T01:51:38.3581425Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3581506Z               "line": 969
2026-06-21T01:51:38.3581600Z             },
2026-06-21T01:51:38.3581691Z             {
2026-06-21T01:51:38.3581798Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3581891Z               "line": 986
2026-06-21T01:51:38.3581977Z             },
2026-06-21T01:51:38.3582069Z             {
2026-06-21T01:51:38.3582187Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3582262Z               "line": 1001
2026-06-21T01:51:38.3582352Z             },
2026-06-21T01:51:38.3582434Z             {
2026-06-21T01:51:38.3582555Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3582636Z               "line": 1027
2026-06-21T01:51:38.3582732Z             },
2026-06-21T01:51:38.3582814Z             {
2026-06-21T01:51:38.3582922Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:51:38.3583013Z               "line": 457
2026-06-21T01:51:38.3583090Z             },
2026-06-21T01:51:38.3583176Z             {
2026-06-21T01:51:38.3583299Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T01:51:38.3583391Z               "line": 338
2026-06-21T01:51:38.3583481Z             },
2026-06-21T01:51:38.3583681Z             {
2026-06-21T01:51:38.3583800Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3583977Z               "line": 10549
2026-06-21T01:51:38.3584068Z             },
2026-06-21T01:51:38.3584148Z             {
2026-06-21T01:51:38.3584262Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:51:38.3584359Z               "line": 1260
2026-06-21T01:51:38.3584444Z             },
2026-06-21T01:51:38.3584525Z             {
2026-06-21T01:51:38.3584640Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T01:51:38.3584735Z               "line": 130
2026-06-21T01:51:38.3584820Z             }
2026-06-21T01:51:38.3584905Z           ]
2026-06-21T01:51:38.3584991Z         }
2026-06-21T01:51:38.3585076Z       }
2026-06-21T01:51:38.3585165Z     },
2026-06-21T01:51:38.3585251Z     {
2026-06-21T01:51:38.3585352Z       "id": "REQ-UPD-7",
2026-06-21T01:51:38.3587626Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-21T01:51:38.3587739Z       "requiredStages": [
2026-06-21T01:51:38.3587829Z         "impl",
2026-06-21T01:51:38.3587917Z         "unit"
2026-06-21T01:51:38.3588006Z       ],
2026-06-21T01:51:38.3588091Z       "stages": {
2026-06-21T01:51:38.3588169Z         "doc": {
2026-06-21T01:51:38.3588264Z           "complete": false,
2026-06-21T01:51:38.3588359Z           "evidence": []
2026-06-21T01:51:38.3588449Z         },
2026-06-21T01:51:38.3588541Z         "impl": {
2026-06-21T01:51:38.3588641Z           "complete": true,
2026-06-21T01:51:38.3588735Z           "evidence": [
2026-06-21T01:51:38.3592898Z             {
2026-06-21T01:51:38.3593046Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3593139Z               "line": 2626
2026-06-21T01:51:38.3593229Z             }
2026-06-21T01:51:38.3593316Z           ]
2026-06-21T01:51:38.3593403Z         },
2026-06-21T01:51:38.3593497Z         "int": {
2026-06-21T01:51:38.3593593Z           "complete": false,
2026-06-21T01:51:38.3593688Z           "evidence": []
2026-06-21T01:51:38.3593773Z         },
2026-06-21T01:51:38.3593850Z         "unit": {
2026-06-21T01:51:38.3593946Z           "complete": true,
2026-06-21T01:51:38.3594051Z           "evidence": [
2026-06-21T01:51:38.3594131Z             {
2026-06-21T01:51:38.3594241Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3594327Z               "line": 10525
2026-06-21T01:51:38.3594413Z             }
2026-06-21T01:51:38.3594512Z           ]
2026-06-21T01:51:38.3594590Z         }
2026-06-21T01:51:38.3594679Z       }
2026-06-21T01:51:38.3594770Z     },
2026-06-21T01:51:38.3594842Z     {
2026-06-21T01:51:38.3594943Z       "id": "REQ-UPD-8",
2026-06-21T01:51:38.3597523Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-21T01:51:38.3597894Z       "requiredStages": [
2026-06-21T01:51:38.3597995Z         "impl",
2026-06-21T01:51:38.3598077Z         "unit"
2026-06-21T01:51:38.3598163Z       ],
2026-06-21T01:51:38.3598247Z       "stages": {
2026-06-21T01:51:38.3598337Z         "doc": {
2026-06-21T01:51:38.3598428Z           "complete": false,
2026-06-21T01:51:38.3598520Z           "evidence": []
2026-06-21T01:51:38.3598609Z         },
2026-06-21T01:51:38.3598685Z         "impl": {
2026-06-21T01:51:38.3598777Z           "complete": true,
2026-06-21T01:51:38.3598863Z           "evidence": [
2026-06-21T01:51:38.3599029Z             {
2026-06-21T01:51:38.3599172Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:51:38.3599253Z               "line": 77
2026-06-21T01:51:38.3599339Z             },
2026-06-21T01:51:38.3599425Z             {
2026-06-21T01:51:38.3599553Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3599644Z               "line": 49
2026-06-21T01:51:38.3599726Z             },
2026-06-21T01:51:38.3599820Z             {
2026-06-21T01:51:38.3599934Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3600022Z               "line": 152
2026-06-21T01:51:38.3600102Z             },
2026-06-21T01:51:38.3600187Z             {
2026-06-21T01:51:38.3600307Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3600398Z               "line": 215
2026-06-21T01:51:38.3600483Z             },
2026-06-21T01:51:38.3600563Z             {
2026-06-21T01:51:38.3600696Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3600776Z               "line": 230
2026-06-21T01:51:38.3600866Z             },
2026-06-21T01:51:38.3600952Z             {
2026-06-21T01:51:38.3601067Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3601152Z               "line": 247
2026-06-21T01:51:38.3601242Z             },
2026-06-21T01:51:38.3601329Z             {
2026-06-21T01:51:38.3601438Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3601528Z               "line": 269
2026-06-21T01:51:38.3601625Z             },
2026-06-21T01:51:38.3601696Z             {
2026-06-21T01:51:38.3601824Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3601906Z               "line": 66
2026-06-21T01:51:38.3601997Z             },
2026-06-21T01:51:38.3602068Z             {
2026-06-21T01:51:38.3602187Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3602288Z               "line": 154
2026-06-21T01:51:38.3602372Z             },
2026-06-21T01:51:38.3602458Z             {
2026-06-21T01:51:38.3602565Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3602650Z               "line": 2430
2026-06-21T01:51:38.3602740Z             },
2026-06-21T01:51:38.3602831Z             {
2026-06-21T01:51:38.3602941Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3603035Z               "line": 2493
2026-06-21T01:51:38.3603126Z             },
2026-06-21T01:51:38.3603213Z             {
2026-06-21T01:51:38.3603326Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3603411Z               "line": 2503
2026-06-21T01:51:38.3603502Z             },
2026-06-21T01:51:38.3603592Z             {
2026-06-21T01:51:38.3603690Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3603790Z               "line": 2510
2026-06-21T01:51:38.3603862Z             },
2026-06-21T01:51:38.3603953Z             {
2026-06-21T01:51:38.3604047Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3604133Z               "line": 2627
2026-06-21T01:51:38.3604225Z             },
2026-06-21T01:51:38.3604311Z             {
2026-06-21T01:51:38.3604424Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:51:38.3604516Z               "line": 480
2026-06-21T01:51:38.3604606Z             },
2026-06-21T01:51:38.3604797Z             {
2026-06-21T01:51:38.3604920Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:51:38.3605011Z               "line": 494
2026-06-21T01:51:38.3605302Z             }
2026-06-21T01:51:38.3605388Z           ]
2026-06-21T01:51:38.3605470Z         },
2026-06-21T01:51:38.3605564Z         "int": {
2026-06-21T01:51:38.3605659Z           "complete": false,
2026-06-21T01:51:38.3605756Z           "evidence": []
2026-06-21T01:51:38.3605842Z         },
2026-06-21T01:51:38.3605921Z         "unit": {
2026-06-21T01:51:38.3606020Z           "complete": true,
2026-06-21T01:51:38.3606102Z           "evidence": [
2026-06-21T01:51:38.3606191Z             {
2026-06-21T01:51:38.3606319Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:51:38.3606409Z               "line": 476
2026-06-21T01:51:38.3606496Z             },
2026-06-21T01:51:38.3606571Z             {
2026-06-21T01:51:38.3606691Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:51:38.3606777Z               "line": 580
2026-06-21T01:51:38.3606872Z             },
2026-06-21T01:51:38.3606962Z             {
2026-06-21T01:51:38.3607073Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3607168Z               "line": 10527
2026-06-21T01:51:38.3607253Z             },
2026-06-21T01:51:38.3607340Z             {
2026-06-21T01:51:38.3607439Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3607540Z               "line": 10549
2026-06-21T01:51:38.3607630Z             }
2026-06-21T01:51:38.3607713Z           ]
2026-06-21T01:51:38.3607802Z         }
2026-06-21T01:51:38.3607883Z       }
2026-06-21T01:51:38.3607964Z     },
2026-06-21T01:51:38.3608046Z     {
2026-06-21T01:51:38.3608145Z       "id": "REQ-UPD-9",
2026-06-21T01:51:38.3610867Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-21T01:51:38.3610982Z       "requiredStages": [
2026-06-21T01:51:38.3611071Z         "doc",
2026-06-21T01:51:38.3611161Z         "impl",
2026-06-21T01:51:38.3611242Z         "unit"
2026-06-21T01:51:38.3611332Z       ],
2026-06-21T01:51:38.3611411Z       "stages": {
2026-06-21T01:51:38.3611497Z         "doc": {
2026-06-21T01:51:38.3611584Z           "complete": true,
2026-06-21T01:51:38.3611689Z           "evidence": [
2026-06-21T01:51:38.3611774Z             {
2026-06-21T01:51:38.3611879Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.3611970Z               "line": 93
2026-06-21T01:51:38.3612060Z             },
2026-06-21T01:51:38.3612136Z             {
2026-06-21T01:51:38.3612238Z               "path": "docs/MANIFEST.md",
2026-06-21T01:51:38.3612332Z               "line": 285
2026-06-21T01:51:38.3612417Z             }
2026-06-21T01:51:38.3612490Z           ]
2026-06-21T01:51:38.3612581Z         },
2026-06-21T01:51:38.3612666Z         "impl": {
2026-06-21T01:51:38.3612752Z           "complete": true,
2026-06-21T01:51:38.3612838Z           "evidence": [
2026-06-21T01:51:38.3612928Z             {
2026-06-21T01:51:38.3613071Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:51:38.3613153Z               "line": 128
2026-06-21T01:51:38.3613248Z             },
2026-06-21T01:51:38.3613329Z             {
2026-06-21T01:51:38.3613458Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3613691Z               "line": 533
2026-06-21T01:51:38.3613778Z             },
2026-06-21T01:51:38.3613966Z             {
2026-06-21T01:51:38.3614095Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.3614185Z               "line": 459
2026-06-21T01:51:38.3614269Z             },
2026-06-21T01:51:38.3614359Z             {
2026-06-21T01:51:38.3614475Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.3614565Z               "line": 505
2026-06-21T01:51:38.3614646Z             },
2026-06-21T01:51:38.3614723Z             {
2026-06-21T01:51:38.3614842Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.3614936Z               "line": 928
2026-06-21T01:51:38.3615028Z             },
2026-06-21T01:51:38.3615114Z             {
2026-06-21T01:51:38.3615232Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:51:38.3615318Z               "line": 302
2026-06-21T01:51:38.3615405Z             },
2026-06-21T01:51:38.3615494Z             {
2026-06-21T01:51:38.3615599Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3615701Z               "line": 5675
2026-06-21T01:51:38.3615786Z             },
2026-06-21T01:51:38.3615867Z             {
2026-06-21T01:51:38.3615972Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3616063Z               "line": 5720
2026-06-21T01:51:38.3616147Z             },
2026-06-21T01:51:38.3616234Z             {
2026-06-21T01:51:38.3616340Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3616434Z               "line": 5857
2026-06-21T01:51:38.3616514Z             },
2026-06-21T01:51:38.3616604Z             {
2026-06-21T01:51:38.3616705Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3616789Z               "line": 5878
2026-06-21T01:51:38.3616869Z             },
2026-06-21T01:51:38.3616955Z             {
2026-06-21T01:51:38.3617066Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3617155Z               "line": 5901
2026-06-21T01:51:38.3617236Z             },
2026-06-21T01:51:38.3617314Z             {
2026-06-21T01:51:38.3617419Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3617508Z               "line": 5928
2026-06-21T01:51:38.3617590Z             }
2026-06-21T01:51:38.3617676Z           ]
2026-06-21T01:51:38.3617757Z         },
2026-06-21T01:51:38.3617847Z         "int": {
2026-06-21T01:51:38.3617938Z           "complete": false,
2026-06-21T01:51:38.3618028Z           "evidence": []
2026-06-21T01:51:38.3618118Z         },
2026-06-21T01:51:38.3618209Z         "unit": {
2026-06-21T01:51:38.3618306Z           "complete": true,
2026-06-21T01:51:38.3618386Z           "evidence": [
2026-06-21T01:51:38.3618476Z             {
2026-06-21T01:51:38.3618602Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:51:38.3618691Z               "line": 259
2026-06-21T01:51:38.3618781Z             },
2026-06-21T01:51:38.3618873Z             {
2026-06-21T01:51:38.3619096Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:51:38.3619179Z               "line": 657
2026-06-21T01:51:38.3619264Z             },
2026-06-21T01:51:38.3619348Z             {
2026-06-21T01:51:38.3619476Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:51:38.3619563Z               "line": 1107
2026-06-21T01:51:38.3619644Z             },
2026-06-21T01:51:38.3619734Z             {
2026-06-21T01:51:38.3619834Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3619921Z               "line": 7565
2026-06-21T01:51:38.3620006Z             }
2026-06-21T01:51:38.3620091Z           ]
2026-06-21T01:51:38.3620179Z         }
2026-06-21T01:51:38.3620273Z       }
2026-06-21T01:51:38.3620363Z     },
2026-06-21T01:51:38.3620445Z     {
2026-06-21T01:51:38.3620536Z       "id": "REQ-WHOAMI-1",
2026-06-21T01:51:38.3622258Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-21T01:51:38.3622563Z       "requiredStages": [
2026-06-21T01:51:38.3622653Z         "doc",
2026-06-21T01:51:38.3622741Z         "impl",
2026-06-21T01:51:38.3622826Z         "unit"
2026-06-21T01:51:38.3622916Z       ],
2026-06-21T01:51:38.3623002Z       "stages": {
2026-06-21T01:51:38.3623088Z         "doc": {
2026-06-21T01:51:38.3623183Z           "complete": true,
2026-06-21T01:51:38.3623273Z           "evidence": [
2026-06-21T01:51:38.3623350Z             {
2026-06-21T01:51:38.3623450Z               "path": "CONTEXT.md",
2026-06-21T01:51:38.3623550Z               "line": 707
2026-06-21T01:51:38.3623631Z             }
2026-06-21T01:51:38.3623723Z           ]
2026-06-21T01:51:38.3623789Z         },
2026-06-21T01:51:38.3623884Z         "impl": {
2026-06-21T01:51:38.3623975Z           "complete": true,
2026-06-21T01:51:38.3624071Z           "evidence": [
2026-06-21T01:51:38.3624160Z             {
2026-06-21T01:51:38.3624276Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3624362Z               "line": 3190
2026-06-21T01:51:38.3624451Z             },
2026-06-21T01:51:38.3624531Z             {
2026-06-21T01:51:38.3624636Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3624726Z               "line": 3218
2026-06-21T01:51:38.3624820Z             }
2026-06-21T01:51:38.3624905Z           ]
2026-06-21T01:51:38.3624982Z         },
2026-06-21T01:51:38.3625068Z         "int": {
2026-06-21T01:51:38.3625168Z           "complete": false,
2026-06-21T01:51:38.3625253Z           "evidence": []
2026-06-21T01:51:38.3625345Z         },
2026-06-21T01:51:38.3625426Z         "unit": {
2026-06-21T01:51:38.3625511Z           "complete": true,
2026-06-21T01:51:38.3625603Z           "evidence": [
2026-06-21T01:51:38.3625684Z             {
2026-06-21T01:51:38.3625793Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3625874Z               "line": 7847
2026-06-21T01:51:38.3625965Z             },
2026-06-21T01:51:38.3626050Z             {
2026-06-21T01:51:38.3626155Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:51:38.3626242Z               "line": 7900
2026-06-21T01:51:38.3626328Z             }
2026-06-21T01:51:38.3626417Z           ]
2026-06-21T01:51:38.3626498Z         }
2026-06-21T01:51:38.3626580Z       }
2026-06-21T01:51:38.3626661Z     }
2026-06-21T01:51:38.3626746Z   ],
2026-06-21T01:51:38.3626847Z   "findings": []
2026-06-21T01:51:38.3626934Z }
